obs-stream-sync
lets you easily sync two livestreams in OBS together, using delay filters and a special layout.
Download App - Download User Scene Collection and Profile
graph TD
A[Stream A] -->D
B[Stream B] -->D
C[Stream C] -->D
D[OBS Studio]
D-->|"WebSocket (downloads\nscreenshot of streams)"|E[obs-stream-sync]
E-->|"WebSocket (edits\nSync Offsets in Audio\nand Video Delay filters)"|D
- Each client/streamer whose stream needs to be synced has a special layout. This layout has URL sources connected to qr.syncer.live that displays a synced-up time, similar to time.curby.net. Theoretically, the same thing will be displayed will be shown on everyone's stream at the exact same time from this.
- The host who's ingesting everyone's streams runs
obs-stream-sync
. This program will hook into your local OBS instance via OBS's WebSocket Server. - The program checks for a Scene named "Stream Sources" in your Sources for livestreams. It'll request screenshots from OBS, and will read the QR Codes from it.
- You can change the name in the auto-generated
config.ini
- You can change the name in the auto-generated
- Download the app, and follow the instructions given in the app. This will help you connect your local OBS instance with it.
- For remote OBS clients, download the Scene Collection and Profile, and load them in with Profile > Import and Scene Collection > Add, then import them both.
- Have these remote OBS clients stream to a server. This will need to be something an OBS Media Source can ingest, like RTMP or SRT.
- Ingest those streams through OBS's Media Source. Put your Media Sources in the scene that will be displayed for the viewer, and for
obs-stream-sync
in a scene named "Stream Sources". This name can be changed in the config. Seeconfig.example.ini
. - Now you should be done! Try using option 1 in the program, seeing if the numbers make sense, then try syncing.
If you run into any issues, please see Troubleshooting, and if you're still stuck, open an issue!
Check out config.example.ini
for all the configuration options obs-stream-sync
allows. All that is contained uses default values, but are now explicit.
It's highly recommended you first launch the application, and follow the instructions before copying parts of
config.example.ini
file. This will make sure you setup your local OBS instance connects.
The program says in OBS to go to Tools > WebSocket Server Settings, but there is no option!
There's a few reasons why this could happen:
-
You're likely running an outdated version of OBS Studio, which doesn't bundle
obs-websocket
by default.Solutions:
- Update OBS to a version higher than v27.
- In OBS, select Help > Check For Updates. This should prompt you to update.
- Install obs-websocket manually, however, v28 and under is untested, and updating is recommended.
- Update OBS to a version higher than v27.
-
You OBS installation didn't add
obs-websocket
when updating to a newer version.Solution:
- In OBS, select Help > Check File Integrity, then select Yes. This will download the missing
obs-websocket
files.
- In OBS, select Help > Check File Integrity, then select Yes. This will download the missing
The program is giving me an ECONNREFUSED error, and won't connect!
Check to see if the OBS WebSocket Server is enabled, by going to Tools > WebSocket Server Settings in OBS. If there's no WebSocket Server Settings option, select Help > CHeck File Integrity.
You should also make sure your OBS is at least v29 or up, in case you're trying to connect to an older, incompatible v4 version of OBS WebSocket. This program only works with v5. If not, either upgrade your OBS (recommended) or attempt to install obs-websocket manually (not recommended).
The program is getting timeout connection errors with localhost, and won't connect!
If you have Portmaster installed, this may cause local networking issues. If you must have it installed, try alternate local IPs, such as your device IP. Search "find device ip address" on your favorite search engine, and specify your operating system in it. The namespace localhost may also be affected. See if 127.0.0.1 directly instead fixes the issue.
If you would like to sanity check if you can connect to your OBS instance at all, try obs-web.niek.tv, and make sure it's in HTTP mode.
-
Allow for set delays, that aren't affected by stream syncing.
Data will be stored with obs-websocket data storage introduced in v5.
Feel free to open an issue or pull request! Also, check out MAINTAINERS.md on info on how to setup a development environment locally.
Zusor - Making time-syncing possible with qr.syncer.live