llstream
Ideally for remote stream monitoring that needs low latency, such as remote productions bundeled with either atemlink or other remote control software.
Available for testing, simply stream h264 or hevc to srt://preview.smmx.dev:10001?streamid=vt0dp0q8sj
Preview at https://preview.smmx.dev:10000?id=vt0dp0q8sj
Unmodified video packets are sent back over websocket, and decoded in browser. You can select to either get view all frames or key frames only. Sender only needs to send one stream, multiple viewers takes bandwidth of server.
example gstreamer pipeline to open first decklink device, overlay timestamp, split, preview, encode and send to online preview
gst-launch-1.0 decklinkvideosrc device-number=1 connection=hdmi buffer-size=1 mode=1080p50 ! \
timeoverlay ! \
tee name=t \
t. ! queue ! videoconvert ! autovideosink sync=false \
t. ! queue ! videoconvert ! nvh264enc bitrate=3000 gop-size=10 tune=ultra-low-latency zerolatency=true ! \
h264parse config-interval=1 ! \
mpegtsmux ! \
srtsink uri="srt://preview.smmx.dev:10001?streamid=vt0dp0q8sj"
example pipeline to open example video, overlay timestamp, split, preview, encode and send to online preview
gst-launch-1.0 videotestsrc pattern=smpte is-live=true ! video/x-raw,width=1280,height=720,framerate=50/1 ! \
timeoverlay ! \
tee name=t \
t. ! queue ! videoconvert ! autovideosink sync=false \
t. ! queue ! videoconvert ! nvh264enc bitrate=3000 gop-size=10 tune=ultra-low-latency zerolatency=true ! \
h264parse config-interval=1 ! \
mpegtsmux ! \
srtsink uri="srt://preview.smmx.dev:10001?streamid=vt0dp0q8sj&latency=50"