-
v0.5.0 Stable
released this
2026-09-06 07:00:49 +02:00 | 16 commits to main since this releaseReceives live streams from several machines running OBS, holds them until they
line up, and passes them on synchronised.RTMP timestamps restart at zero on every connection and carry no shared
reference, so a sink receiving several feeds cannot tell which frames were
captured at the same instant. A small agent runs beside each OBS: it keeps
an NTP-style clock offset against the sink, and reads capture times from OBS's
own timeline over obs-websocket rather than guessing from when packets arrive.
Nothing is transcoded on the relay path; encoded media is passed through byte
for byte.Getting the output into OBS
Delivery is usually where multi-camera rigs come apart: a player pulling a
stream applies its own buffering, two players buffer differently, and feeds
that left in step arrive out of step. Three options, best first:- Virtual camera (Linux) — each source becomes an ordinary Video Capture
Device at its own resolution, with nothing buffering it on the way in.
Needsv4l2loopback, the same module OBS uses for its own virtual camera. - Program view — sources decoded and drawn into a window for OBS to
capture. Tiled into one window, or one window each. Works on both platforms. - RTMP push or pull — for a downstream that is not OBS. Subject to
whatever buffering that downstream applies.
Downloads
File For streamsink-0.5.0-linux-amd64.tar.gzLinux server and agent streamsink-0.5.0-windows-agent-amd64.zipWindows agent, for each OBS machine streamsink-0.5.0-windows-server-amd64.zipWindows server, with the GTK4 runtime streamsink-0.5.0-windows-decoder-amd64.zipWindows decoder, only for the program view Run
streamsink.exefrom inside its extracted folder; GTK loads its runtime
from alongside it. For the program view, extract the decoder archive into that
same folder. The Linux server needs GTK4 installed; the agent is static and
needs nothing.Known limitations
- Virtual cameras are Linux only. On Windows a camera is a signed driver
registered with administrator rights, which an application cannot supply. - Virtual camera output is untested end to end.
v4l2loopbackwas not
available on the build machine. Device discovery, permission and
configuration checks are tested; ffmpeg writing frames into a loopback node
is not. - The Windows binaries have not been executed. They are verified by
construction and by import analysis over every bundled binary, not by
launching them. - Sync reaches back as far as OBS, and no further. A capture card holding
frames or a camera's own processing delay is invisible to StreamSink; the
per-source offset exists for that residual. - Relay, not transcode. Every source must already be in a format the
downstream accepts.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Virtual camera (Linux) — each source becomes an ordinary Video Capture