Skip to content

Notable changes between 4.x and 5.x

tt2468 edited this page Aug 2, 2022 · 2 revisions

Resources

  • The protocol specification for 5.x is available here
  • The README has some software and libraries that support 5.x.

Changes since 4.x

There are way too many changes to list here, so the main highlights are summarized.

UI

  • The UI has gotten a full revamp.
  • New "Session Table" which displays the remote address of all currently connected WebSocket clients.
  • New "Connect Info" dialog, featuring the ability to copy the IP and password of the server, and also a QR code generator which can be scanned to connect to obs-websocket locally.
  • Password authentication is enabled by default, and generates a secure password for you that you can copy. We recommend always keeping authentication enabled, with a password generated by obs-websocket.

Protocol

  • **The default port for obs-websocket 5.x is now 4455.
  • The protocol has gotten a revamp, with many QOL improvements over the 4.x protocol. This is effectively a new protocol, so applications designed to work only with 4.x versions will not work with 5.x versions.
  • See here for the design goals regarding the 5.x protocol.

Requests

  • Virtually anything possible in 4.x is possible in 5.x. If you are having trouble migrating your code to 5.x, you are invited to join the Discord server and ask for guidance. We are also working on a migration guide which will be releasing soon.
  • We added a new "vendor" API to obs-websocket, which allows third-party plugins to extend their plugin's functionality through obs-websocket requests and events. If you are an OBS plugin author, we invite you to explore this system as a means of adding further features to your plugins.
    • We've already added this functionality to obs-browser
    • A sample plugin c file with this feature can be found here
  • Some new requests have been added for opening UI dialogs. This should have great adoption for people building macros.
    • OpenInputPropertiesDialog
    • OpenInputFiltersDialog
    • OpenInputInteractDialog
  • We've added Get/SetPersistentData to allow you to store custom JSON data on the machine where obs-websocket is running.
  • You can now set OBS' video settings via Get/SetVideoSettings.
  • The ability to remove inputs (previously called sources) has finally been added.
  • Limited support for groups has been added, but we recommend using nested scenes over groups when possible.
  • You can now change the blend mode of scene items.

Request Batches

  • Request batches have gotten a bit of an overhaul.
  • We've added a new RequestBatchExecutionType, allowing you to do things like execute requests in batches in-sync with video composition for things like animations.
    • Here is a Python sample from simpleobsws where the classic DVD bounce animation is recreated using SerialFrame request batches.

Events

  • It's now possible to receive a stream of audio level updates by subscribing to the InputVolumeMeters event.
  • We've added the CurrentSceneCollectionChanging event which should be used as a signal to pause any outgoing requests to obs-websocket. Performing requests during a scene collection change is considered undefined behavior.
  • More audio-related input events like InputAudioBalanceChanged.

Helpful Resources

Contributor Resources

4.x to 5.x Migration Resources

For Ourselves

Clone this wiki locally