#!/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 " 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