LibrePlanet: Conference/2017/Streaming

From LibrePlanet
Jump to: navigation, search

Slides streaming script

This script captures 1024x768 pixels from the top right screen (the projector screen). The screens can be configured in these three ways:

  • Mirrored, 1024x768: The whole screen is streamed.
  • Dual, 1280x800 + 1024x768: The screen on the right is streamed. Make sure that the two screens are top aligned and contiguous.
  • Dual, 1024x768 + 1024x768: The screen on the right is streamed. Make sure that the two screens are contiguous.
#!/bin/bash

BITRATE=500000
MOUNT=room-141-slides.webm
PASSWORD=pw
FRAMERATE=10

if xdpyinfo|grep -i dimensions |grep 2304x800 -q; then
    XPARAMETERS="startx=1279 starty=0 endx=2303 endy=767"
fi
if xdpyinfo|grep -i dimensions |grep 2048x768 -q; then
    XPARAMETERS="startx=1023 starty=0 endx=2047 endy=767"
fi

while true; do
  sleep 1
  gst-launch-1.0 -e ximagesrc $XPARAMETERS use-damage=false show-pointer=false ! videoconvert !  videorate ! video/x-raw,framerate=$FRAMERATE/1 ! videoscale ! video/x-raw, width=1024, height=768 ! queue ! vp8enc target_bitrate=$BITRATE cpu-used=16 deadline=1 threads=2 keyframe-max-dist=$(expr $FRAMERATE \* 2) ! webmmux streamable=true ! shout2send ip=live2.fsf.org port=80 mount=$MOUNT password=$PASSWORD sync=false
done

480p Scaling script

This takes a video that is being streamed at live*.fsf.org/video.webm, scales it down to 480p, and publishes it back as live*.fsf.org/video-480p.webm

#!/bin/bash

if [ $# != 1 ]; then
 echo usage $0 http://foo.bar/baz.webm
 exit 1
fi

BITRATE=500000
URL=$1
PASSWORD=pw

MOUNT=$(echo $URL |sed 's=.*/==; s/.webm//')-480p.webm

while true; do
  sleep 1
  if wget $URL -O - -q | grep . -q ; then
    gst-launch-1.0 -v souphttpsrc location=$URL ! decodebin ! videoconvert ! videoscale ! video/x-raw, width=853, height=480 ! queue ! vp8enc target_bitrate=$BITRATE cpu-used=16 deadline=1 threads=2 ! webmmux streamable=true ! shout2send ip=live2.fsf.org port=80 mount=$MOUNT password=$PASSWORD sync=false                                                                                                       
 
 else
    echo $URL is not live
  fi
done

Command to do the same with just audio

   gst-launch-1.0 -v souphttpsrc location=http://live2.fsf.org/test.webm ! matroskademux ! oggmux ! shout2send ip=live2.fsf.org port=80 mount=test.ogg password=pw sync=false