Local network streaming server with:
- always-on channel streams
- on-demand file/folder playback
- account login and live chat
Designed for home servers and Raspberry Pi style setups.
Ubuntu/Debian:
sudo apt update
sudo apt install -y python3 ffmpeg jqWhy these are needed:
python3: web server and APIffmpeg: encoding + HLS stream generationjq: starts all channels fromchannels.json
git clone <your-repo-url>
cd StreamingPut source media into:
media/raw/<Show or Folder Name>/...
Then encode to streaming-friendly 720p:
./encode_to_720p.shEncoded files are written to media/converted/ with matching folder structure.
After encoding, download cover art for each show from TVMaze (free, no API key needed):
python3 fetch_covers.pyThis scans every folder in media/converted/ and downloads a cover.jpg (or .png/.webp) into any folder that doesn't already have one. It uses TVMaze for TV shows; a name override map inside the script handles common naming mismatches (e.g. Bobs Burgers → Bob's Burgers). Folders like Movies or Music-Videos are skipped by default.
To add a manual override for a show TVMaze can't find, add an entry to TVMAZE_OVERRIDES at the top of fetch_covers.py:
"Your Folder Name": "Exact TVMaze Show Title",Edit channels.json so each channel points to folders that exist under media/converted/.
sudo ./start_server.shThen open:
http://maxistreams.local- or
http://<your-server-ip>
sudo ./stop_server.shDirect HLS URL format:
http://<your-server-ip>/channels/<channel-id>/output/<channel-id>.m3u8
Server log:
output/server.log
- User account data is stored locally in
src/configurations/users.json. - That users file is intentionally git-ignored (not committed).
- Paths are repository-relative by default (for example
media_rootusesmedia/converted). - Use an SSD for better stream performance.
- Long-running outputs/logs rotate and segment files are cleaned up over time.
Yes. A new user can clone, install python3/ffmpeg/jq, add media, run one encode command, then start the server. The exact commands are listed above for copy/paste setup.