m3uproxy
m3uproxy is a Go-based HTTP server designed to proxy HLS (HTTP Live Streaming) streams. It provides a convenient way to manage and distribute streaming streams with user management and access control features.
Features
M3U Playlist Generation : Serve dynamically generated M3U playlists for your streams.
XMLTV EPG Support : Provide an XMLTV formatted Electronic Program Guide (EPG) for supported streams.
HLS Stream Proxying : Securely proxy HLS streams via a token-based system.
User Management : Control access to the M3U playlist and streaming streams.
Fallback Message : Serve a "stream unavailable" message when necessary.
Endpoints
/streams.m3u (Restricted)
Description : Returns the M3U playlist with all available streams.
Access : Restricted to authenticated users.
Usage : This endpoint should be accessed only after proper authentication. It provides a list of streams in the M3U format.
/epg.xml
Description : Returns the Electronic Program Guide (EPG) in XMLTV format.
Access : Public.
Usage : Useful for clients that support EPGs to fetch the program guide associated with the streams.
/m3uproxy/proxy/{token}/{streamId}/*
Description : Proxies the HLS stream for the specified stream.
Access : Token-based access control.
Parameters :
token: A unique token to authenticate the request.
streamId: The identifier of the stream.
Usage : Used by clients to access the actual HLS stream. Replace {token} and {streamId} with valid values.
/m3uproxy/streams/*
Description : Streams a "stream unavailable" message. (FFMPEG > 5.0 must be installed)
Access : Internal use only.
Usage : Automatically redirected when a stream is unavailable or an error occurs.
Environment variables
M3UFILE : original m3u stream list (local or http) (default: "/config/playlist.m3u")
EPGFILE : epg file location (local or http) (default: "/config/epg.xml")
USERSFILE : users file (local or http) (default: "/config/users.json")
NOSERVICEFILE : file used for no service image (local) (default: "/app/assets/no_service_pt.jpg")
SCANTIME : schedule for scanning for streams availability (default: "600")
USERNAME : default user (default: "admin")
PASSWORD : default password (default: "admin")
Contribute
Find more here .