Skip to content
This repository has been archived by the owner on Apr 17, 2022. It is now read-only.
/ bmir-stream-2020 Public archive

Code that runs the Burning Man Information Radio's 2020 online stream

License

Notifications You must be signed in to change notification settings

dtcooper/bmir-stream-2020

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BMIR 2020 Stream Code

Here's the code that powers Burning Man Informatio Radio's 2020 stream.

Harbor

Found in the harbor/ folder.

Here is the script that runs the stream preference automation. The output of this stream comes from one of the following from a basic hierarchy.

  1. [Most preferred] A "priority" Icecast 2 mount for pre-recorded shows to stream to, as well as for administrators to take over the stream, if needed.
  2. An Icecast 2 mount for DJs remote stream to. Silence being broadcast on this stream will be treated as if a DJ is not connected after 25 seconds.
    • The live stream accepts passwords from a Google Sheet that authenticates passwords (and kicks people off) based on time intervals.
    • The test stream accepts a fixed passwords, does not kick people off, and will also accept password from the spreadsheet for testing.
  3. PulseAudio input. This will be the dummy device monitor output of a Zoom room running inside Xvfb using icewm as a window manager. Silence on this input will be treated as if the stream is down.
  4. An autoDJ rotating tracks from disk mixed in with station ID and ad blocks every so often.

You can use Docker to test this, however the script runs without Docker on an Ubuntu 20.04 machine.

To run the harbor

Copy over the environment configuration file and edit it.

cd harbor
cp env.vars.default env.vars

If you have liquidsoap installed on a Linux machine OR if you have Docker on macOS, run,

./run.sh

The most important open ports are:

  • 8000: The Icecast 2 server to listen to the stream. See the status page at http://localhost:8000/ with mount /test.
  • 8001: The liquidsoap harbor script.
    • Stream to mounts /stream or /priority (as above) with default password hackme
    • View the harbor status page by going to http://localhost:8001/, default password is hackme.
  • 80: nginx + noVNC, with a desktop environment with Zoom installed. You can test out Zoom streaming with the PulseAudio input described above by going to http://localhost/ and opening Zoom.
  • 1234: Telnet monitor of the harbor script.
    • Try connecting and sending help + enter for more info.

License

This project is licensed under the MIT License - see the LICENSE file for details.