HLS / XMLTV Home broadcasting is a home broadcasting system, it leverages FFMPEG & Nginx to broadcast your own do it yourself channels 24 hours a day across a home network
A M3U is auto generated from the FFMPEG HLS (M3U8) outputs A XMLTV is generated by probing the video files for their duration using FFPROBE, with this info it extrapolates and writes a valid matching XMLTV file
These M3U and XMLTV files are supported popular systems: I personally run it on TiviMate and a Enimga2 Box, but it will run on much much more
- Querys TVMAZE to get episode descriptions etc...
- Randomizing Episodes
- Randomized Idents - The channel stays in order but "Idents" are injected between the episodes to recreate the channel surfing experience
- Metadata & Probe Info Caching System
a TMPFS in the NGINX web directory is required to run this effectively
to quickly setup a ram disk:
$ mount -t tmpfs -o size=512m tmpfs /var/www/html/streams
to make it automatic when linux boots edit the /etc/fstab with something like this:
$ tmpfs /var/www/html/streams tmpfs nodev,nosuid,noexec,nodiratime,size=512M 0 0
Video files on the same channel all have to be the same format,
If yours don't,
I Recommend FFmpeg Batch AV Converter
here is the parameters i use to match 4:3 & 16:9 content in one go
-c:v libx264 -crf 23 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -c:a aac -b:a 128K -ar 48K -ac 2
- BASH
- NGINX
- FFMPEG / FFPROBE
- PYTHON
- JQ (LINUX PACKAGE - needed to query TV_MAZE, will still run without it but it will fallback to just filenames)
- Make sure all the required software mentioned above are installed
- Clone the repository into your machine
- Edit the config file with your installations info
- Add your channel playlists to concat_files directory (see example for formating)
- Run cron.sh to launch all channels (gives pretty output)
- GNU GPL v3
- Copyright 2010-2020
My personal docker version, matches development machine and pulls master branch, image is about 125mb
Created by chasx003, it has a fixed version and had its variables rewritten to docker variables, image is about 157mb