obs-websocket - Remote-control OBS Studio using WebSockets

obs-websocket - Remote-control OBS Studio using WebSockets 5.0.1

Hi everyone,

We're releasing the next version of obs-websocket on the forum, 5.0.1. This version rewrites the whole underlying RPC protocol and brings lots of new features. To use this version, you will need to have a client that supports the new protocol. This version will be included starting OBS v28, so this release is only for users running OBS version 27.x.x.

For more info on the changes to the protocol, see here. If you want to use 5.0.1 and keep support for the old protocol, install the `4.9.1-compat` version linked in the GitHub release in addition to 5.0.1.

Last note, the current `4.9.1-compat` binaries will not work with OBS v28, so we'll release new binaries specifically for 28+ soon.

Enjoy!
Changes since 4.9.0

New Features
Enhancements
  • Added scale.filter field to the SceneItemTransform typedef.
  • The playPause parameter of the PlayPauseMedia request is now optional.
  • The volumeDb parameter has been added to the SourceVolumeChanged event.
  • Added support for obs-websocket to be built inline with OBS-Studio. (Versus out of tree)
Fixes
  • Fixed an issue where not all image file formats were supported in 4.9.0.
  • Fixed multiple scenarios where OBS could crash during shutdown with obs-websocket installed.
  • Fixed an issue causing the Ubuntu deb package to have an incorrect version.
  • Fixed an issue where creating a scene with CreateScene then deleting it would require an OBS restart in order to use the name again.
  • The Windows and MacOS binaries are now built against Qt 5.15.2, just like OBS. This helps fix a number of issues.
  • Fixed some memory leaks in SetSceneTransitionOverride, SetTBarPosition, and ReleaseTBar.

Windows, Linux and macOS Install instructions: see the release page on GitHub.
Only use this release with OBS Studio 26 or above!

Changes since 4.8.0

New Features

Enhancements
  • Made password authentication enabled by default and added a new popup asking to set a new password on first startup (#657)
  • Added the ability to lock obs-websocket to only using an IPv4 address to bind to (#559)
  • Added recordingFilename field to the response of GetRecordingStatus and the various Recording events (#621)
  • Added scene item ID support to SetSceneItemRender (#628)
  • Changed the position datatype in GetSceneItemProperties to a double instead of an integer (#533)
  • TakeSourceScreenshot now defaults to the current scene if no source name is provided (#557)
  • SetCurrentSceneCollection and SetCurrentProfile now check if the provided sc/profile name is valid (#560)
  • More detailed state information for various events. More details in PR description (#619)
  • Added more translations provided through Crowdin (#636)
Fixes
  • Fixed a crash that can happen when OBS exits with existing websocket clients (#644)
  • Fixed a crash that can happen when notifications are enabled in obs-websocket (#571)
  • Fixed useDecibel parameter of GetVolume when the volume is -INFINITY (#529)
  • Fixed missing request parameters response when performing GetOutputInfo, StartOutput, StopOutput (#618)
  • Fixed the file permissions of the Ubuntu deb release file. (Previously were 777) (#627)
  • Reenabled captions requests for MacOS (#546)
  • SetVolume now allows mul values higher than 1.0 and dB values higher than 0.0 (#629)
Notes
  • The README has been updated with some new libraries and web clients that can be used to interface with obs-websocket
  • Added a new guide for enabling SSL access with ngrok: SSL-TUNNELlING.md

Windows, Linux and macOS Install instructions: see the release page on GitHub.
Only use this release with OBS Studio 25 or above!

Changes since 4.7.0

New Features

Enhancements
Fixes
  • Fixed crashes when calling EnableStudioMode, DisableStudioMode or ToggleStudioMode
  • Fixed an issue where SetStreamSettings wouldn't apply if switching service type
  • Any event that returns transition duration now returns -1 if the transition is fixed (Eg. Cut, Stinger)
  • SetSyncOffset now allows negative offsets
  • Removed from-scene from TransitionEnd since it isnt actually available
  • Fixed JPEG support in TakeSourceScreenshot on Windows
  • Fixed a crash when sending an event on OBS exit
  • Fixed source recognition on GDI+ and Freetype 2 sources
  • Fixed the OBS log getting spammed with unnecessary messages on Linux (regardless of whether debug logging was enabled)
  • Fixed an issue where the plugin failed to load on MacOS
  • Fixed a bunch of memory leaks in GetCurrentProfile, GetCurrentSceneCollection and the Heartbeat event
Important Notes
Windows, Linux and macOS Install instructions: see the release page on GitHub.
Only use this release with OBS 23 or above!

Changed since 4.6.1
Windows, Linux and macOS Install instructions: see the release page on GitHub.
  • Like
Reactions: 11rogelio57
Only use this release with OBS 23 or above!

4.6.1 Hotfix changes
  • Bugfix: TransitionBegin event not triggering at all
4.6.0 changes
  • Revamped WebSockets server: the WebSockets server backend was completely rewritten. Instead of Qt's WebSockets library, starting with 4.6 obs-websocket now uses websocketpp by zaphoyd. Other benefits include:
    • Requests are received and processed in a separate dedicated threads. The old server processed everything in the UI/main window thread.
    • Everything (main plugin + server dependencies) is now in a single binary file.
  • Server settings are now per-profile settings instead of global settings: the server is automatically started, stopped or restarted when switching profiles. New profiles inherit settings from the previously selected profile.
  • New request types:
    • TakeSourceScreenshot: take an image snapshot of a source (either an input or a scene) and save it straight to a file and/or receive it in the response as base64-encoded Data URI
    • SendCaptions (Windows/macOS only): send closed captions text to the streaming output. For instance, Twitch's player supports closed captions sent through SendCaptions
    • GetStats: provides most of the metrics found in OBS' Stats window.
    • GetVideoInfo: Fetch information about OBS' video output settings: base/canvas size and output size, pixel format, YUV settings, ...
  • New event types:
  • Feature: StreamStatus and Heartbeat events now include data from OBS' stats and a replay-buffer-active property (for StreamStatus)
  • Feature: GetSceneItemProperties and SetSceneItemProperties now have support for a locked property that allows users to lock or unlock a scene item and get its current lock state
  • Feature: the response from GetSceneItemProperties now includes width and height values computed from the item's base dimensions and current scaling settings.
  • Source and Scene Item events enhancements:
    • Source and Scene Item events will also be triggered for the current preview scene (in Studio Mode) and scenes not currently visible on program or preview
    • All scene item events now include an item-id property
    • SourceOrderChanged now includes a list of the reordered scene items
  • Fixed incompatibilites with Groups:
    • Scene Item requests can now target items nested in groups
    • Scene item data now includes two new properties:
      • parentGroupName on scene items that belong to a group
      • children on groups
  • Bugfix: crash on startup when the "port already in use" message shows up
  • Bugfix: error with SetSceneItemProperties when trying to set the bounds type of a scene item
  • Bugfix: plugin not loading on Ubuntu when installing through the .deb file (wrong plugin path)
  • Bugfix (docs): GetSourcesTypesList is supposed to be GetSourceTypesList
  • Docs: the Protocol Specification now includes type definitions that can be shared among several request types. These encourage reusing existing response formats, and allows obs-websocket-js to provide type definitions in their TypeScript bindings.
Windows, Linux and macOS Install instructions: see the release page on GitHub.
Only use this release with OBS 23 or above!

4.6.0 release
  • Revamped WebSockets server: the WebSockets server backend was completely rewritten. Instead of Qt's WebSockets library, starting with 4.6 obs-websocket now uses websocketpp by zaphoyd. Other benefits include:
    • Requests are received and processed in a separate dedicated threads. The old server processed everything in the UI/main window thread.
    • Everything (main plugin + server dependencies) is now in a single binary file.
  • Server settings are now per-profile settings instead of global settings: the server is automatically started, stopped or restarted when switching profiles. New profiles inherit settings from the previously selected profile.
  • New request types:
    • TakeSourceScreenshot: take an image snapshot of a source (either an input or a scene) and save it straight to a file and/or receive it in the response as base64-encoded Data URI
    • SendCaptions (Windows/macOS only): send closed captions text to the streaming output. For instance, Twitch's player supports closed captions sent through SendCaptions
    • GetStats: provides most of the metrics found in OBS' Stats window.
    • GetVideoInfo: Fetch information about OBS' video output settings: base/canvas size and output size, pixel format, YUV settings, ...
  • New event types:
  • Feature: StreamStatus and Heartbeat events now include data from OBS' stats and a replay-buffer-active property (for StreamStatus)
  • Feature: GetSceneItemProperties and SetSceneItemProperties now have support for a locked property that allows users to lock or unlock a scene item and get its current lock state
  • Feature: the response from GetSceneItemProperties now includes width and height values computed from the item's base dimensions and current scaling settings.
  • Source and Scene Item events enhancements:
    • Source and Scene Item events will also be triggered for the current preview scene (in Studio Mode) and scenes not currently visible on program or preview
    • All scene item events now include an item-id property
    • SourceOrderChanged now includes a list of the reordered scene items
  • Fixed incompatibilites with Groups:
    • Scene Item requests can now target items nested in groups
    • Scene item data now includes two new properties:
      • parentGroupName on scene items that belong to a group
      • children on groups
  • Bugfix: crash on startup when the "port already in use" message shows up
  • Bugfix: error with SetSceneItemProperties when trying to set the bounds type of a scene item
  • Bugfix: plugin not loading on Ubuntu when installing through the .deb file (wrong plugin path)
  • Bugfix (docs): GetSourcesTypesList is supposed to be GetSourceTypesList
  • Docs: the Protocol Specification now includes type definitions that can be shared among several request types. These encourage reusing existing response formats, and allows obs-websocket-js to provide type definitions in their TypeScript bindings.
Windows, Linux and macOS Install instructions: see the release page on GitHub.
Only use this release with OBS 22 or above!

4.5.1 bugfix release
  • Bugfix: plugin not loading on Ubuntu (misplaced binary)
  • Bugfix: improper control flow in filter management requests (missing return statements)
4.5.0 changes
  • New request types:
    • Filter management:
      • GetSourceFilters
      • AddFilterToSource
      • RemoveFilterFromSource
      • ReorderSourceFilter
      • MoveSourceFilter
      • SetSourceFilterSettings
    • Scene Items:
      • DeleteSceneItem
      • DuplicateSceneItem
      • ReorderSceneItems
    • Source settings:
      • GetTextFreetype2Properties
      • SetTextFreetype2Properties
  • Updated request types:
    • Breaking changes in GetTextGDIPlusProperties, SetTextGDIPlusProperties, GetBrowserSourceProperties and SetBrowserSourceProperties:
      • Removed the scene-name parameter: deemed useless on sources, which are independent from scenes
      • Removed the render request parameter and response property
    • GetVolume: fix typo in protocol specification (❎ mute ; ✔️ muted)
  • Refactored authentication code:
    • If you have authentication enabled and your current password doesn't work anymore, try setting it again.
  • macOS Bugfix: Qt version mismatch
  • Fixed various typos in the protocol specification
Windows, Linux and macOS Install instructions: see the release page on GitHub.
Only use this release with OBS 22 or above!

Changes since 4.4.0
  • New request types:
    • Filter management:
      • GetSourceFilters
      • AddFilterToSource
      • RemoveFilterFromSource
      • ReorderSourceFilter
      • MoveSourceFilter
      • SetSourceFilterSettings
    • Scene Items:
      • DeleteSceneItem
      • DuplicateSceneItem
      • ReorderSceneItems
    • Source settings:
      • GetTextFreetype2Properties
      • SetTextFreetype2Properties
  • Updated request types:
    • Breaking changes in GetTextGDIPlusProperties, SetTextGDIPlusProperties, GetBrowserSourceProperties and SetBrowserSourceProperties:
      • Removed the scene-name parameter: deemed useless on sources, which are independent from scenes
      • Removed the render request parameter and response property
    • GetVolume: fix typo in protocol specification (❎ mute ; ✔️ muted)
  • Refactored authentication code:
    • If you have authentication enabled and your current password doesn't work anymore, try setting it again.
  • macOS Bugfix: Qt version mismatch
  • Fixed various typos in the protocol specification
Windows, Linux and macOS Install instructions: see the release page on GitHub.
  • Like
Reactions: CeH9 and MartiieZ
Only use this release with OBS 22 or above!

Changes since 4.3.3
  • TransitionBegin event: new from-scene and to-scene fields to provide source and destination scene names for the currently running transition
  • Bugfix: TransitionBegin event not triggering when using Transition Overrides
  • Improvement: better handling of "preview scene changed" events provided by libobs
Windows, Linux and macOS Install instructions: see the release page on GitHub.
Top