The following is the GNU All-permissive License as recommended in https://www.gnu.org/licenses/license-recommendations.en.html

Copyright (C) 2024 Free Software Foundation sysadmin@fsf.org

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.

Contributions are welcome. See https://savannah.gnu.org/maintenance/fsf/.

LibrePlanet Low Resolution video streaming

Create the following script:

#!/bin/bash

if [ $# -lt 1 ] || [ $# -gt 2 ] ; then
    echo "usage $0 stream-room-neptune [--audio]"
    exit 1
fi

audio_only=false
if [ ! -z $2 ] ; then
    if [ $2 == "--audio" ] ; then
        audio_only=true
    else
        echo "usage $0 stream-room-neptune [--audio]"
        exit 1
    fi
fi

password=cheeW1Oh
encoder_speed="ultrafast"

mount="$1"
src_url="http://live-master.fsf.org:8000/${mount}.webm"
dest_url="icecast://source:${password}@live-master.fsf.org:8000/${mount}-lowres.webm"
dest_ogg_url="icecast://source:${password}@live-master.fsf.org:8000/${mount}.ogg"

while true; do
    sleep 1
    if wget $src_url -O - -q | grep . -q ; then

        if [ "$audio_only" == "true" ] ; then
            ffmpeg  -f webm -re -i "${src_url}" \
                -f ogv -reconnect_at_eof 1  -reconnect_streamed 1  -content_type audio/ogg \
                -c:a copy -preset "${encoder_speed}"  -deadline realtime  -threads 2 -error-resilient 1  \
                -bufsize 100K  -content_type audio/ogg -vn \
                "${dest_ogg_url}"
        else
            ffmpeg  -f webm -re -i "${src_url}" -vf scale=854:480 \
                -f webm -reconnect_at_eof 1  -reconnect_streamed 1  -content_type video/webm  -cluster_time_limit 5100  -cluster_size_limit 1M \
                -c:a copy -b:v 500k  -preset "${encoder_speed}"  -deadline realtime  -threads 2 -error-resilient 1  \
                -maxrate 500k  -bufsize 1M  -content_type video/webm -c:v libvpx \
                "${dest_url}"
        fi

    else
        echo $(date): ${src_url} is not live on live-master.fsf.org
    fi
done

Set the password for the source user from the live-master icecast server.

Execute like so:

./low-res-scaling-480p.sh stream-room-neptune

# for audio:

./low-res-scaling-480p.sh stream-room-neptune --audio

This script should run on a server such as lowres0p.fsf.org during the conference. This lowers our bandwidth, and reduces load on streamers.