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 Events:
- Added Requests:
- 4 new Virtualcam-related requests.
- Sleep - Pause execution of a batch request for the given duration of time.
- GetSourceActive - Whether the specified source is active on program (the output feed).
Fixes
- 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)
- 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
- Added Events:
- New Media category with lots of events
- SourceAudioActivated
- SourceAudioDeactivated
- Added Requests:
- New Media Control category with lots of requests
- ExecuteBatch
- CreateSource
- CreateScene
- GetSourceDefaultSettings
- RefreshBrowserSource
- AddSceneItem
- GetSceneItemList
- GetAudioActive
- TriggerHotkeyByName
- TriggerHotkeyBySequence
- GetRecordingStatus
- GetReplayBufferStatus
- GetTransitionSettings
- SetTransitionSettings
- GetTransitionPosition
- ReleaseTBar
- SetTBarPosition
Fixes
- 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)
Notes
- 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)
- 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
- Added Events:
- Added Requests:
Fixes
- In GetSceneItemProperties, SetSceneItemProperties and ResetSceneItem, you can now target scene items either by their source name or by their ID (#449)
- Added itemId response property to the GetSceneItemProperties request
- Added alignment response property to the GetSceneItemProperties request
- Added type response property to the TransitionBegin event
- Added muted property to SceneItem typedef
- Added supported-image-export-formats response property to the GetVersion request
- Added useDecibel request property to SetVolume and GetVolume requests. See docs for more info
- Added compressionQuality and fileFormat request properties to TakeSourceScreenshot
- Added sourceType response property to SourceRenamed event
- SendCaptions now uses obs_output_output_caption_text2 internally
- The macOS binary and installer now have proper digital signatures and are notarized by Apple
Important Notes
- 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
Windows, Linux and macOS Install instructions: see the release page on GitHub.
- SetBrowserSourceProperties and GetBrowserSourceProperties are now deprecated in favor of SetSourceSettings and GetSourceSettings
- The build instructions for linux have changed. See the build doc for more info
- Unfortunately, T-Bar control did not make it into this release, as the libobs API doesn't yet provide all the necessary functions to achieve this functionality
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.
- Support for Recording Pause (#371):
- New request types: PauseRecording and ResumeRecording
- New event types: RecordingPaused and RecordingResumed
- Add a recording-paused field in the response/event fields of GetStreamingStatus, Heartbeat and StreamStatus
- The recording timecode field now takes pauses into account
- Ability to broadcast custom events to all connected clients of the server (#354)
- Calling the BroadcastCustomMessage request type will send a BroadcastCustomMessage event to all connected clients
- Ability to control the visibility state of a source filter with SetSourceFilterVisibility (#388)
- Source filter info responses and events now have a filterEnabled boolean field
- New event type for filter visibility: SourceFilterVisibilityChanged
- Generic outputs control API (#343)
- Adds request types ListOutputs, GetOutputInfo, StartOutput and StopOutput
- Other request type additions:
- Improvement: the WebSockets server now only starts after OBS has finished loading completely (#367)
- Improvement: the TransitionBegin event now reports a duration of 0 if the reported transition is a Cut transition (#364)
- Documentation fix: make it clear that TakeSourceScreenshot can take scene screenshots as well (#384)
- Bugfix: crash when calling ToggleStudioMode or TransitionToProgram (#320)
- Bugfix: incorrect recording path (#366)
- Bugfix: ReorderSceneItems now works without crashing (#365)
- Bugfix: crash when the server fails to send a message to a disconnecting client (#369)
- Bugfix: add Linux Browser Source support to GetBrowserSourceProperties and SetBrowserSourceProperties (#360)
- macOS: fixes for compatibility with OBS Studio 24.0.3 and macOS Catalina (#385)
Only use this release with OBS 23 or above!
4.6.1 Hotfix changes
4.6.0 changes
- Bugfix: TransitionBegin event not triggering at all
Windows, Linux and macOS Install instructions: see the release page on GitHub.
- 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:
- Audio mixing events:
- Source & Scene Item events:
- 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.
Only use this release with OBS 23 or above!
4.6.0 release
Windows, Linux and macOS Install instructions: see the release page on GitHub.
- 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:
- Audio mixing events:
- Source & Scene Item events:
- 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.
Only use this release with OBS 22 or above!
4.5.1 bugfix release
4.5.0 changes
- Bugfix: plugin not loading on Ubuntu (misplaced binary)
- Bugfix: improper control flow in filter management requests (missing return statements)
Windows, Linux and macOS Install instructions: see the release page on GitHub.
- 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
Only use this release with OBS 22 or above!
Changes since 4.4.0
Windows, Linux and macOS Install instructions: see the release page on GitHub.
- 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
Only use this release with OBS 22 or above!
Changes since 4.3.3
Windows, Linux and macOS Install instructions: see the release page on GitHub.
- 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