control | ||
liq | ||
.editorconfig | ||
.gitignore | ||
index.js | ||
package-lock.json | ||
package.json | ||
README.md |
IcyTV
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?
Requirements
- Liquidsoap
gstreamer
- I'm not sure which plugins you actually need, but I just installgstreamer1.0-plugins-*
and it usually does the trickocamlsdl
,fdkaac
andtheora
ocaml modules in addition toliquidsoap
'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
- Follow the requirements
- Clone this repository
npm install
- 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 Liquidsoapqueue
- Queue a file, or pretty much anything supported byyoutube-dl
skip
- Skip the currently playing mediastatus
- Reports the status of your Liquidsoap processevents
- Refreshes your calendarreload
- 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.
My CPU is on fire!!!
You're actively decoding and encoding video, wtf are you screaming at me for?
It doesn't F***ING work!!!!!11!
Read point 8 in Requirements.