What it does
OBS SRT Toolkit adds two real, first-class OBS resources: an SRT Output (a real entry under OBS's outputs, controlled by its own dedicated dock) and an SRT Source (a real entry under Sources → +, alongside Media Source and Capture Card). Both support Listener (OBS binds and waits) and Caller (OBS dials out) modes, with the usual SRT options — latency, passphrase/encryption, stream ID. It replaces the older workaround of repurposing OBS's Custom FFmpeg Output to push SRT, which doesn't auto-reconnect and isn't discoverable as a real output.
Built as a real OBS plugin (a loadable .dll/.so, not a companion app driving OBS externally) using obs-wrapper/obs-sys's safe Rust bindings around libobs, with a small C++/Qt shim for the one thing pure Rust can't do — a real persistent dock widget in OBS's own main window.
Why this plugin
- Independent of Stream/Record.The dock's Start/Stop is its own control, deliberately not wired to OBS's built-in Start Streaming/Start Recording buttons — push SRT out without touching your actual stream or recording state.
- A real Source, not a URL you have to hand-construct.Typed fields (mode, host/port, latency, passphrase, stream ID) instead of memorizing FFmpeg's
srt://query-string syntax — under the hood it hands off to OBS's own built-in FFmpeg-backed decoder, so it inherits whatever hardware decode support your OBS install already has. - Tested end-to-end against a real production tool, not just synthetically.Verified against a real OmniBridge instance in both directions — OmniBridge routing a live source into an OBS scene, and OmniBridge pulling OBS's own program feed back out — with real sustained throughput, not just a completed handshake.
- Real installers, not a manual file copy.The Windows
.msifinds your existing OBS Studio install automatically via the registry and installs the plugin into the correctobs-plugins\64bitfolder — no hunting for the right directory.
How it fits into a production
- Not tied to one downstream product.The plugin doesn't know or care what's on the other end of the SRT connection — OmniBridge is the first real-world pairing it's been tested against, but any SRT-speaking source or destination works the same way.
- Shares OBS's existing encoder.The SRT Output currently reuses whichever encoder Streaming or Recording already has configured, rather than creating a dedicated one — Stream or Record needs to have been started at least once to bring that encoder up, but doesn't need to stay running once the Output is going.
- Real MPEG-TS muxing, independently validated.PAT/PMT/PES with correct PIDs and PTS/DTS conversion from the encoder's own timebase to MPEG-TS's fixed 90kHz clock — checked against a real independent decoder (
ffprobe), not just round-tripped through the same library that wrote it. - Reconnects on its own.The SRT transport layer races a shutdown signal against every blocking step (connecting, backoff, waiting for data), so Stop is always prompt and a dropped connection retries with a fixed backoff instead of hanging.
Under the hood
Rust (obs-wrapper/obs-sys safe bindings around libobs), a small C++/Qt shim for the dock widget (no MOC step needed — stock Qt classes wired with lambda-based signal/slot connections only), srt-tokio for the transport, hand-rolled MPEG-TS muxing, WiX for the Windows installer.
Installing
Windows: download the .msi from the project's GitLab Releases page and run it — it finds your existing OBS Studio install automatically and installs into the right plugin folder. Linux: download the .tar.gz and copy obs-srt-toolkit.so into your distro's OBS plugins directory. Restart OBS afterward — "SRT Toolkit" appears in the Docks menu, and "SRT Source" appears in Sources → +. Full instructions, including pairing it with OmniBridge specifically, are on the wiki.