This project implements a high-performance video streaming server that receives UDP streams and serves them as HLS (HTTP Live Streaming) streams. It's designed to handle multiple named streams concurrently and provides real-time status monitoring of active streams.
https://hub.docker.com/r/tstacey/stream-manager
docker pull tstacey/stream-manager
Run the following command:
docker run -p 5000:5000 -p 8080:8080 -p 80:80 -p 5100-5200:5100-5200/udp -v ./users.csv:/app/users.csv tstacey/stream-manager
Example users.csv:
admin,password123
admin2,password456
Once the server is running, you can access the admin dashboard at: http://DOCKER_HOST_IP:5000
The admin dashboard can be used to create and delete named streams.
Once a stream has been created with name "mystream", it becomes available at http://DOCKER_HOST_IP:8080/mystream.
To view the stream you can use ffplay:
ffplay http://DOCKER_HOST_IP:8080/mystream
Or access the HLS playlist directly:
http://DOCKER_HOST_IP:8080/mystream.m3u8
For better performance, streams can be accessed directly via NGINX on port 80 using clean URLs:
http://DOCKER_HOST_IP/mystream
This bypasses the Python server and serves HLS content directly through NGINX.
The server provides real-time status monitoring for each stream:
The server uses Python's logging module to provide detailed logs.
ffmpeg -re -stream_loop -1 -i VIDEO.ts -map 0 -c:v libx264 -maxrate 512k -b:v 512k -bufsize 50M -f mpegts 'udp://DOCKER_IP:5100?pkt_size=188'
Note: Replace 5100 with the UDP port you configured for your stream in the admin interface.
Content type
Image
Digest
sha256:94a7d825e…
Size
545.1 MB
Last updated
about 1 year ago
docker pull tstacey/stream-manager