| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #!/bin/bash
- SNOWMIX=/usr/local/lib/Snowmix-0.5.1
- if [ "X$SNOWMIX_PORT" = X ] ; then export SNOWMIX_PORT=9999 ;fi
- if [ "X$SNOWMIX_IP" = X ] ; then export SNOWMIX_IP=127.0.0.1 ;fi
- if [ $# -lt 1 ] ; then
- echo -e "Missing argument \nUsage $0 <input file>"
- exit 1
- fi
- # Set video feed and audio feed id
- feed_id=2
- audio_feed_id=2
- source="/home/nginx/videos/$1"
- if [ ! -f "$source" ]; then
- echo "'$source' is not a file or whatever"
- exit 1
- fi
- # Check for SNOWMIX variable and the snowmix and gstreamer settings
- if [ ! -f "$SNOWMIX/scripts/gstreamer-settings" -o ! -f "$SNOWMIX/scripts/snowmix-settings" ] ; then
- echo "Can not find the the file scripts/gstreamer-settings or scripts/snowmix-settings"
- echo "in the directory set by the enviroment variable SNOWMIX"
- echo "You need to se the environment variable SNOWMIX to the base of the Snowmix installed directory"
- exit 1
- fi
- # Load the Snowmix and GStreamer settings
- . $SNOWMIX/scripts/gstreamer-settings
- . $SNOWMIX/scripts/snowmix-settings
- # This will set
- # a) feed_rate
- # b) feed_channels
- # c) feed_control_pipe
- # d) feed_width
- # e) feed_height
- # f) ctrsocket
- # g) system_width
- # h) system_height
- # i) ratefraction
- # j) snowmix
- # k) channels
- # l) rate
- if [ X$feed_control_pipe = X -o X$system_width = X -o X$system_height = X ] ; then
- echo Failed to get control pipe or width or height from running snowmix
- exit 1
- fi
- #echo "Snowmix Geometry : $system_width x $system_height"
- #echo "Snowmix control socket : $ctrsocket"
- echo "Video feed geometry : $feed_width x $feed_height"
- echo "Video control socket : $feed_control_pipe"
- echo "Video and audio feed id : $feed_id $audio_feed_id"
- if [ X$feed_rate = X -o X$feed_channels = X ] ; then
- echo Failed to get rate or channels from running snowmix
- echo Disabling audio
- else
- echo "Audio rate and channels : $feed_rate $feed_channels"
- fi
- SRC="filesrc location=$source ! $decodebin name=decoder ! $VIDEOCONVERT "
- SHMSIZE='shm-size='`echo "$feed_width * $feed_height * 4 * 26"|bc`
- SHMOPTION="wait-for-connection=1 sync=true"
- SHMSINK1="shmsink socket-path=$feed_control_pipe $SHMSIZE $SHMOPTION"
- #SCALE="$VIDEOCONVERT ! videoscale ! $VIDEOCONVERT"
- SCALE="videoscale ! $VIDEOCONVERT"
- AUDIOFORMAT="$AUDIOS16LE"', rate='$feed_rate', channels='$feed_channels
- VIDEOFORMAT=$VIDEOBGRA', width='$feed_width', height='$feed_height', framerate='$ratefraction
- VIDEOFORMAT=$VIDEOBGRA', width='$feed_width', height='$feed_height
- rm -f $feed_control_pipe
- if [ X$feed_rate != X -a X$feed_channels != X ] ; then
- (
- echo 'audio feed ctr isaudio '$audio_feed_id
- $gstlaunch -e $SRC ! \
- videorate ! $SCALE ! $VIDEOFORMAT ! $SHMSINK1 decoder. \
- ! queue ! audioconvert ! audioresample ! $AUDIOFORMAT ! fdsink fd=3 sync=true 3>&1 1>&2
- ) | nc $SNOWMIX_IP $SNOWMIX_PORT
- else
- $gstlaunch -e -q $SRC ! \
- $SCALE ! \
- $VIDEOFORMAT ! \
- $SHMSINK1
- $gstlaunch -e -q $SRC ! \
- $SCALE ! \
- $VIDEOFORMAT ! \
- $SHMSINK1
- fi
|