Giter Site home page Giter Site logo

some1chan / obs-stream-sync Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 263 KB

obs-stream-sync lets you easily sync two livestreams in OBS together, using delay filters and a special layout.

Home Page: https://liberapay.com/some1chan/

License: MIT License

TypeScript 100.00%
open-broadcaster-software obs nodejs

obs-stream-sync's Introduction

obs-stream-sync

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

Table of Contents

How It Works

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

How to Set Up

  1. Download the app, and follow the instructions given in the app. This will help you connect your local OBS instance with it.
  2. 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.
  3. 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.
  4. 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. See config.example.ini.
  5. 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!

config.ini

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.

Troubleshooting

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:
  1. 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.
  2. 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.
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.

Future Plans

  • Allow for set delays, that aren't affected by stream syncing.

    Data will be stored with obs-websocket data storage introduced in v5.

Want to Contribute?

Feel free to open an issue or pull request! Also, check out MAINTAINERS.md on info on how to setup a development environment locally.

Special Thanks

Zusor - Making time-syncing possible with qr.syncer.live

obs-stream-sync's People

Contributors

some1chan avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.