Go to file
Evert Prants e0cc8e5aaf
API server
2019-01-11 19:36:58 +02:00
control API server 2019-01-11 19:36:58 +02:00
liq API server 2019-01-11 19:36:58 +02:00
.editorconfig initial 2018-12-18 19:38:18 +02:00
.gitignore initial 2018-12-18 19:38:18 +02:00
README.md slight mod 2019-01-11 07:44:00 +02:00
index.js API server 2019-01-11 19:36:58 +02:00
package-lock.json API server 2019-01-11 19:36:58 +02:00
package.json API server 2019-01-11 19:36:58 +02:00



This project is an attempt at continuous video streaming with Liquidsoap in order to create a basic WebTV type of stream.

Included is a simple scheduling system which also draws a schedule over the fallback (default) stream.

It streams video to a configured RTMP server, m'kay?


  • Liquidsoap
  • gstreamer - I'm not sure which plugins you actually need, but I just install gstreamer1.0-plugins-* and it usually does the trick
  • ocamlsdl, fdkaac and theora ocaml modules in addition to liquidsoap's requirements
  • node.js
  • youtube-dl to queue videos from websites like YouTube.
  • An RTMP server
  • (optional) A Google Calendar for your events, along with an API key from here
  • Some patience and knowledge on how to Google your errors
  • A relatively good machine that can handle continuous decoding and encoding of video
  • ..just sheer luck tbh

Installation & Running

  1. Follow the requirements
  2. Clone this repository
  3. npm install
  4. Start the application using node index.js

When running the application for the first time, it will create a config.json file that you'll have to modify.

In-application commands

The Node application features command line commands that you can input.

  • start, stop, restart - Start/stop/restart Liquidsoap
  • queue - Queue a file, or pretty much anything supported by youtube-dl
  • skip - Skip the currently playing media
  • status - Reports the status of your Liquidsoap process
  • events - Refreshes your calendar
  • reload - Reloads the configuration file

You can safely exit the application via Ctrl+C or SIGINT for you nerds out there.

Scheduling events

You just need a Google calendar and an API key. To schedule a queue, simply put $: followed directly by the media (e.g. a YouTube URL) you want queued when the event starts in the event's description. The first line in the description is also used in the schedule overlay.

License & Credits

This project is licensed under CC0. Feel free to modify and redistribute as you please.

Some bits and pieces of code were "borrowed" from Parasprite Radio. Go check it out.

Common complaints

It doesn't F***ING work!!!!!11!

Read point 8 in Requirements.

My CPU is on fire!!!

You're actively decoding and encoding video, wtf are you screaming at me for?