Generate and host HTTP Live Streams from local video content using FFMpeg. Broadcaster will create playlists of your video files and live stream the playlist. It will orchestrate time keeping to make sure anyone watching your stream is in the same position. If no one is watching, the timeline keeps going, just like old school TV stations.
Broadcaster pre-generates HLS segments for all your videos on first startup. This transcoding process runs in the background and can take a while depending on your library size and hardware. Once transcoded, videos are cached and don't need to be re-encoded on subsequent startups.
The web UI is available immediately at startup, but channels won't appear until at least one video has been transcoded. You can monitor transcoding progress in the Docker logs or console output.
- Broadcaster uses FFMpeg to encode your videos to h264 for HTTP Live Streaming.
- If you have an Nvidia GPU, it is highly recommended you have
ffmpegcompiled with Nvidia's non-freeh264_nvenccodec. - If you have an Intel CPU with Intel QuickSync, you can try the
h264_qsvcodec. - Without either of these, you'll have to use a software codec like
libx264which will be slower. You can set the codec in the config.txt.
Clone the repository:
git clone https://github.com/theodoreroddy/Broadcaster.git
Change into the Broadcaster directory and run npm install:
cd ./Broadcaster
npm install
Define your channels in a channels.json file:
[{
"type": "shuffle",
"name": "My Channel",
"slug": "mychannel",
"paths": [
"/path/to/videos"
]
}]The type specifies the playlist type:
shuffle: will shuffle the files and play them in a random order.alphabetical: will play the files back in alphabetical order.
The name is a human readable name for the channel and the slug specifies the directory name the channel will use.
Start your server:
npm start
On first run, Broadcaster will transcode all videos in your library. Monitor progress with:
# Docker
docker logs -f broadcaster
# Or if running directly
npm startYou'll see output like:
[PreGenerator] Transcoding: My Video.mkv (1/50)
[PreGenerator] Transcoding complete: My Video.mkv
Channels will appear in the web UI as their videos finish transcoding.