GET :9091/api/v1/streams/demo- Input, tracks, health and enabled output state.
http://127.0.0.1:8080/hls/demo/master.m3u8- Traditional HLS multivariant playlist.
http://127.0.0.1:8080/llhls/demo/master.m3u8- Low-latency HLS multivariant playlist.
Start a node
Compose the smallest useful node: SRT push input with HLS and LL-HLS output.
Private alpha: this guide is for provisioned test-partner environments. See the licensing page for current distribution and runtime license details.
1. Write JSONC
Save this as dispergo.jsonc. It enables one anonymous SRT listener for a trusted local network and two independent HTTP outputs.
{
"server": {
"operational": {"host": "0.0.0.0", "port": 9091}
},
"input": {
"srt": {
"push": {
"enabled": true,
"listener": {
"host": "0.0.0.0",
"port": 6001,
"allowAnonymous": true
}
}
}
},
"output": {
"root": "/var/lib/dispergo",
"lowWaterMarkBytes": 67108864,
"http": {
"listener": {"host": "0.0.0.0", "port": 8080},
"hls": {"enabled": true},
"llhls": {"enabled": true}
}
}
}
Anonymous SRT is explicit, not safe by default. Use a 10 to 80 byte passphrase instead of allowAnonymous outside a trusted or filtered network.
2. Run
In a provisioned test-partner environment, authenticate to GHCR with credentials that can read the private package, then pull the current release:
IMAGE=ghcr.io/dispergo/server:v0.8.0
docker pull "$IMAGE"
docker run --rm --name dispergo \
--read-only \
-p 6001:6001/udp \
-p 127.0.0.1:8080:8080/tcp \
-p 127.0.0.1:9091:9091/tcp \
--mount type=bind,src="$(pwd)/dispergo.jsonc",dst=/etc/dispergo/dispergo.jsonc,readonly \
--tmpfs /var/lib/dispergo:rw,noexec,nosuid,size=1g,uid=65532,gid=65532,mode=0770 \
"$IMAGE"
The container is non-root and reads its configuration from /etc/dispergo/dispergo.jsonc. The temporary output volume is only for this first run. This unsuffixed image is FFmpeg-free; use the matching v0.8.0-transcode image when thumbnail generation, repair or WebRTC audio conversion needs FFmpeg. See image variants.
curl --fail http://127.0.0.1:9091/livez
curl --fail http://127.0.0.1:9091/readyz
3. Push media
The SRT streamid is the canonical stream ID. This command publishes a test stream named demo:
ffmpeg -re \
-f lavfi -i 'testsrc2=size=1280x720:rate=25' \
-f lavfi -i 'sine=frequency=1000:sample_rate=48000' \
-map 0:v:0 -map 1:a:0 \
-c:v libx264 -preset veryfast -tune zerolatency \
-profile:v baseline -level:v 3.1 -pix_fmt yuv420p \
-g 25 -keyint_min 25 -sc_threshold 0 -bf 0 \
-c:a aac -ac 1 -ar 48000 -b:a 64k \
-muxdelay 0 -muxpreload 0 -pes_payload_size 0 -flush_packets 1 \
-f mpegts \
'srt://127.0.0.1:6001?mode=caller&streamid=demo'