The desktop machine streamed out to the world via OBS Studio (Open Broadcaster Software) and Icecast. Connected to the desktop machine was a webcam, projector, and a mixer with a microphones and a loudspeaker connected.
The laptop's screen streamed to the desktop.
All of the devices were placed on the same local LAN with a hub.
If there was a pre-recorded video, it was played locally on the machine with mpv.
For remote speakers, we hosted our own BigBlueButton 1.9 instance for remote speakers to connect to and enter a video "call" with a computer. A screen capture of this call was then simultaneously streamed in OBS.
OBS Settings are listed below:
#### Output ##### Recording tab Output Mode drop-down: `Advanced` * Type: `Custom Output (FFmpeg)` * FFmpeg Output Type: `Output to URL` * File path or URL: `icecast://source:PASSWORD@example.fsf.org:8000/stream-room-NAME.webm` * Note: Password has an O as in Opal. Not a zero. * Container format: `webm` * Muster settings (if any): `content_type=video/webm cluster_time_limit=5100 cluster_size_limit=2M` * Video Bitrate: `1500 Kbps` * Keyframe interval (frames): `150` * Rescale Output: greyed out, not settable. * Show all codecs (even if potentially incompatible): checked * Video Encoder: `libvpx` * Video Encoder Settings (if any): `rt cpu-used=5 threads=2 error-resilient=1 crf=30 g=150 minrate=1.5M maxrate=1.5M` * Audio Bitrate: `96 Kbps` * Audio Track: check mark on 1. * Audio Encoder: `libvorbis` * Audio Encoder Settings (if any): empty #### Audio * Desktop Audio: (Set to your output device such that you see sound levels when there is audio playing on your system) * When using the Behringer U-CONTROL UCA222 USB audio device, it comes up as `PCM2902 Audio Codec Analog Stereo` #### Video Base (Canvas) Resolution: `1280x720`
We modified the look of BigBlueButton with the Stylus browser extension.
For networking, we set up OpenVPN to tunnel to our streaming server, and we used the LibrePlanet:Conference/2023/Streaming/flip-network.sh script to switch between two network providers, in case one of our connections went down or provided reduced bandwidth.