A rudimentary implementation of a livestreaming server in go. RTMP and SRT, and fmp4 HLS.
Find a file
2023-09-22 12:33:55 +05:00
http Removed client caching, fix for old video having mismatched codecs with new 2023-09-22 12:33:31 +05:00
rtmp Moved transcoder command creation to separate package entirely 2023-09-08 14:56:21 +05:00
srt Pipe to transcoder instead of file 2023-09-22 12:33:55 +05:00
static to run with custom hls-player instead of hls.js 2023-08-24 15:20:30 +05:00
transcoder Moved transcoder command creation to separate package entirely 2023-09-08 14:56:21 +05:00
go.mod ack report with correct metadata 2023-09-21 12:40:16 +05:00
main.go Basic UDP tunneling intake 2023-09-18 11:51:55 +05:00
README.md added readme 2023-08-24 14:40:57 +05:00

stream-server

Extremely basic live stream server

Currently implements a degraded subset of the RTMP protocol for ingest.

Uses the std lib http server implementation for the http serving side.

Not intended for actual use. The stream key use is not secure and is used to handle directories without a user db system, than to provide auth

Limits to a single stream at a time, mostly for the lack of db to handle connections rather than concurrency problems.

Currently always transcodes to h264 + aac, segments to fragmented mp4. Creates one segment playlist, no manifest. Uses ffmpeg

HTTP streaming relies on hls.js. Will be broken until I figure out how to modify the EXT-X-MAP:URI field to prepend a path prefix.

Currently produces no logs nor debug info. Will just abandon a connection if there is a problem. Will not send any RTMP replies since flash server docs seem dead and abort messages are netStream commands

Ports are hard-coded into main.go. Modify if needed

Run with go run main.go. Could also build if you prefer that instead.