Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

VRC OBS Controller

Control OBS recording and streaming directly from your VRChat avatar's expression menu — no external apps required.

[VRChat Avatar Menu]  ──OSC UDP:9001──▶  [OBS Plugin]  ──OSC UDP:9000──▶  [VRChat]
   (OBS Control submenu)                  (this repo)                      (state sync-back)

The OBS plugin listens for OSC messages from VRChat and calls the OBS recording/streaming API directly. It also sends the current OBS state back to VRChat so your avatar toggles stay in sync.

Contents

OBSController/
├── obs-plugin/               # Native OBS C++ plugin (Windows x64)
│   ├── src/
│   │   ├── plugin-main.cpp   # Module entry point, OSC handler, frontend events
│   │   ├── osc-server.cpp/h  # Winsock2 UDP OSC receiver
│   │   ├── osc-sender.cpp/h  # UDP OSC sender (state sync-back to VRChat)
│   │   └── settings-dialog   # Qt6 settings panel (Tools menu)
│   └── CMakeLists.txt
├── unity-prefab/
│   └── OBSController.unitypackage   # Import into your Unity avatar project
└── nodejs-receiver/          # Legacy Node.js bridge (superseded by obs-plugin)

Requirements

  • OBS Studio 32.x (Windows x64, Steam or standalone)
  • VRChat SDK3 (Avatars) + Modular Avatar ≥ 1.9
  • Unity 2022.3.x LTS

Installation

OBS Plugin

  1. Download obs-osc-controller.dll from the latest release
  2. Copy it to <OBS install>\obs-plugins\64bit\
  3. Restart OBS

The plugin adds an OBS OSC Controller entry under Tools. Default ports:

Port Direction Purpose
9001 VRChat → OBS Receive OSC commands
9000 OBS → VRChat Send state sync-back

VRChat Avatar

  1. Open your avatar project in Unity 2022.3.x
  2. Ensure VRChat SDK3 Avatars and Modular Avatar ≥ 1.9 are installed
  3. Assets → Import Package → Custom Package → select OBSController.unitypackage
  4. Drag Assets/OBSController/OBSController prefab onto your avatar root in the Hierarchy
  5. Build & upload the avatar

The prefab adds an OBS Control submenu to your expression menu with two toggles: OBS Recording and OBS Streaming.

Enable OSC in VRChat

Quick Menu → Options → OSC → Enable

Usage

Action Effect
Toggle OBS Recording ON Starts OBS recording
Toggle OBS Recording OFF Stops OBS recording (after 3 s debounce)
Toggle OBS Streaming ON Starts OBS streaming
Toggle OBS Streaming OFF Stops OBS streaming (after 3 s debounce)
Start/stop recording in OBS manually Avatar toggles sync back within ~1 s

The 3-second debounce prevents VRChat's parameter re-broadcast from immediately cancelling a just-started recording.

Building the Plugin

Requires Visual Studio 2022 Build Tools and CMake.

cd obs-plugin
# Download OBS headers + Qt6 deps (see _build_deps/README if present)
cmake -B build -G "Visual Studio 17 2022" -A x64 `
  -DOBS_INCLUDE_DIR=... -DOBS_FRONTEND_INCLUDE=... `
  -DOBS_LIB=... -DOBS_FRONTEND_LIB=... `
  -DCMAKE_PREFIX_PATH=_build_deps/qt6
cmake --build build --config Release

OSC Address Reference

Address Type Direction
/avatar/parameters/OBS_Record bool VRChat → OBS (command)
/avatar/parameters/OBS_Stream bool VRChat → OBS (command)
/avatar/parameters/OBS_Record bool OBS → VRChat (state sync)
/avatar/parameters/OBS_Stream bool OBS → VRChat (state sync)

License

MIT — see LICENSE

Third-party components: see ATTRIBUTION.md

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages