Skip to content

sniffingpickles/BitrateSceneSwitch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BitrateSceneSwitch Banner

Release Build License

This plugin was heavily inspired by NOALBS. Huge thanks to the NOALBS team for their amazing work!


Features

  • Automatic Scene Switching - Switch scenes based on bitrate thresholds
  • Multiple Server Support - Works with BELABOX, NGINX, SLS, MediaMTX, and more
  • RTT Monitoring - SRT round-trip-time based switching
  • Twitch Chat Integration - Control scenes via chat commands
  • Configurable Triggers - Set low bitrate, offline, and RTT thresholds
  • Optional Scenes - Starting, ending, privacy, and refresh scenes

Screenshots

General Settings Chat Settings


Installation

Windows

  1. Download the latest release from Releases
  2. Extract the zip file
  3. Copy contents to your OBS installation:
    • BitrateSceneSwitch.dllC:\Program Files\obs-studio\obs-plugins\64bit\
  4. Restart OBS Studio

Usage

  1. Open OBS Studio
  2. Go to ToolsBitrate Scene Switch
  3. Configure your stream server and thresholds
  4. Select your scenes and click Save

Chat Commands

Control the switcher via Twitch chat (requires setup in Chat tab):

Command Description
!live Switch to Live scene
!low Switch to Low scene
!brb Switch to BRB/Offline scene
!ss <name> Switch to any scene (case-insensitive)
!refresh Refresh scene (fix issues)
!fix Refresh media sources
!status Show current bitrate status
!trigger Force switch check
!start Start streaming
!stop Stop streaming

WebSocket API

BitrateSceneSwitch registers as an obs-websocket vendor, allowing external tools, bots, and overlays to control the plugin remotely. Requires obs-websocket (included with OBS 28+).

All requests use the vendor name BitrateSceneSwitch and are sent via the obs-websocket CallVendorRequest message.

Requests

Request Description Parameters Response
GetSettings Get all plugin settings none enabled, onlyWhenStreaming, instantRecover, retryAttempts, triggers, scenes
SetSettings Update plugin settings (partial updates supported) Any settings field (e.g. enabled, triggerLow, sceneNormal) success: true
GetStatus Get live status none currentScene, isStreaming, bitrateKbps, rttMs, isOnline, serverName, statusMessage, enabled
SwitchScene Switch to a specific scene sceneName (string, required) success: true/false, error if failed
StartStream Start streaming none success: true/false, error if already streaming
StopStream Stop streaming none success: true/false, error if not streaming
GetVersion Get plugin version none version, vendor

Example (obs-websocket JSON)

{
  "op": 6,
  "d": {
    "requestType": "CallVendorRequest",
    "requestId": "1",
    "requestData": {
      "vendorName": "BitrateSceneSwitch",
      "requestType": "GetStatus"
    }
  }
}

Example (obs-websocket-js)

const resp = await obs.callVendorRequest("BitrateSceneSwitch", "GetStatus", {});
console.log(resp.bitrateKbps, resp.rttMs, resp.currentScene);

Supported Servers

Server Stats URL Example
BELABOX https://cloud.belabox.net/stats
NGINX RTMP http://localhost:8080/stat
SRT Live Server http://localhost:8181/stats
MediaMTX http://localhost:9997/v3/paths/get/
Node Media Server http://localhost:8000/api/streams
Nimble http://localhost:8082
IRLHosting Your server stats URL

Building

cmake -B build -S .
cmake --build build --config Release

License

GPL-2.0


v1.0.3 | Powered by IRLHosting

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published