#!/bin/bash # Deliver mixer1 output to screen. # Taken from the original snowmix sources # USE OPEN-BSD NETCAT OTHERWISE THINGS KEEP BLOCKING if [ -z "$1" -o -z "$2" -o -z "$3" ]; then echo "Usage $0 " exit fi remote_ip="$1" outwidth="$2" outheight="$3" tmpfile=/tmp/output2screen.tmp.$$ echo 'system info' | nc 127.0.0.1 9999 >$tmpfile geometry=`grep 'STAT: System geometry' $tmpfile |cut -f3 -d: |cut -f2 -d' '|tr 'x' ' '` framerate=`grep 'STAT: Frame rate' $tmpfile |cut -f3 -d: |cut -f2 -d' '` ctrsocket=`grep 'STAT: Output ctr socket' $tmpfile |cut -f3 -d: |cut -f2 -d' '` rm $tmpfile VIDEO=video/x-raw-rgb AUDIO=audio/x-raw-int frameratefraction() { echo $1 | awk '{ rate=$1 ; factor=1; intrate=int(rate); while (factor*rate > intrate) { factor = factor * 10; intrate = int(rate*factor); } printf("%d/%d\n",intrate,factor); }' } ratefraction=`frameratefraction $framerate` width=`echo $geometry |cut -f1 -d' '` height=`echo $geometry |cut -f2 -d' '` MIXERFORMAT=$VIDEO', bpp=(int)32, depth=(int)32, endianness=(int)4321, format=(fourcc)BGRA, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)'$width', height=(int)'$height', framerate=(fraction)'$ratefraction', pixel-aspect-ratio=(fraction)1/1, interlaced=(boolean)false' OUTPUTFORMAT=$VIDEO', width='$outwidth', height='$outheight while true ; do gst-launch-0.10 -v shmsrc socket-path=$ctrsocket do-timestamp=true is-live=true ! \ $MIXERFORMAT ! \ queue leaky=2 !\ tee name=atee ! \ videoscale ! \ $OUTPUTFORMAT ! \ ffmpegcolorspace ! \ queue ! \ ximagesink \ atee. !\ queue leaky=2 !\ timeoverlay !\ ffmpegcolorspace !\ 'video/x-raw-yuv' !\ jpegenc !\ rtpjpegpay !\ udpsink host=$remote_ip port=9998 sync=true sleep 2 done