Subsystem API
UInhyeongOBSSubsystem is a UGameInstanceSubsystem that owns the OBS WebSocket connection and exposes 100+ Blueprint-callable methods. It persists across level loads and is the primary facade for OBS control.
Access from C++:
UInhyeongOBSSubsystem* OBS = GetGameInstance()->GetSubsystem<UInhyeongOBSSubsystem>();
From Blueprint: Get Game Instance → Get Subsystem (InhyeongOBSSubsystem).
Note: The OBS Component (UInhyeongOBSComponent) mirrors nearly all of these methods for per-actor use, and adds scene-watching (see OBS Component). Handler-level methods not surfaced here are reached via GetClient()->GetXxx() (see Handlers API).
Throughout this page, BlueprintPure getters (the GetCached* / Is* / state readers) are marked (Pure). Everything else is BlueprintCallable. Most non-pure getters are asynchronous: they send a request to OBS and the result arrives via a delegate event (see Events).
Connection
| Function | Signature / Params | Description |
|---|
Connect | (FString Host = "localhost", int32 Port = 4455, FString Password = "", bool bAutoReconnect = true) | Connect and authenticate to an OBS WebSocket server. |
SetAutoReconnect | (bool bAutoReconnect) | Enable/disable automatic reconnection. |
Disconnect | () | Close the connection and clear pending requests. |
IsConnected | () → bool | (Pure) True when fully connected and identified. |
GetConnectionState | () → EOBSConnectionState | (Pure) Current state (Disconnected/Connecting/Authenticating/Connected). |
GetClient | () → UInhyeongOBSWebSocketClient* | (Pure) Direct client access for advanced usage and handler reach-through. |
Scene Collections
| Function | Signature / Params | Description |
|---|
GetSceneCollectionList | () | Fetch the list of scene collections. |
SetCurrentSceneCollection | (FString SceneCollectionName) | Switch the active scene collection. |
CreateSceneCollection | (FString SceneCollectionName) | Create a new scene collection. |
GetCachedSceneCollections | () → TArray<FString> | (Pure) Cached scene-collection names. |
GetCurrentSceneCollectionName | () → FString | (Pure) Cached active scene collection. |
Profiles
| Function | Signature / Params | Description |
|---|
GetProfileList | () | Fetch the list of profiles. |
SetCurrentProfile | (FString ProfileName) | Switch the active profile. |
CreateProfile | (FString ProfileName) | Create a new profile. |
RemoveProfile | (FString ProfileName) | Delete a profile. |
GetCachedProfiles | () → TArray<FString> | (Pure) Cached profile names. |
GetCurrentProfileName | () → FString | (Pure) Cached active profile. |
Video Settings
| Function | Signature / Params | Description |
|---|
GetVideoSettings | () | Fetch the current video settings. |
SetVideoSettings | (FOBSVideoSettings Settings) | Set full video settings. |
SetBaseResolution | (int32 Width, int32 Height) | Set the base (canvas) resolution. |
SetOutputResolution | (int32 Width, int32 Height) | Set the scaled output resolution. |
SetFPS | (int32 FpsNumerator, int32 FpsDenominator = 1) | Set the output frame rate. |
GetCachedVideoSettings | () → FOBSVideoSettings | (Pure) Cached video settings. |
Stream Service Settings
| Function | Signature / Params | Description |
|---|
GetStreamServiceSettings | () | Fetch current stream service settings. |
SetStreamServiceSettings | (FOBSStreamServiceSettings Settings) | Set stream service settings. |
SetSimpleRTMPSettings | (FString Server, FString StreamKey) | Configure a custom RTMP server + key. |
GetCachedStreamServiceSettings | () → FOBSStreamServiceSettings | (Pure) Cached stream service settings. |
Scenes
| Function | Signature / Params | Description |
|---|
GetSceneList | () | Fetch the list of scenes. |
SetCurrentScene | (FString SceneName) | Switch the active program scene. |
GetCurrentSceneName | () → FString | (Pure) Cached active scene name. |
GetCachedScenes | () → TArray<FOBSScene> | (Pure) Cached scene list. |
| Function | Signature / Params | Description |
|---|
GetSceneItemTransform | (FString SceneName, int32 SceneItemId) | Fetch a scene item’s transform. |
SetSceneItemTransform | (FString SceneName, int32 SceneItemId, FOBSSceneItemTransform Transform) | Set a scene item’s full transform. |
SetSceneItemPosition | (FString SceneName, int32 SceneItemId, float X, float Y) | Set position only. |
SetSceneItemRotation | (FString SceneName, int32 SceneItemId, float Rotation) | Set rotation (degrees) only. |
SetSceneItemScale | (FString SceneName, int32 SceneItemId, float ScaleX, float ScaleY) | Set scale only. |
SetSceneItemCrop | (FString SceneName, int32 SceneItemId, int32 Left, int32 Top, int32 Right, int32 Bottom) | Set crop edges. |
SetSceneItemBounds | (FString SceneName, int32 SceneItemId, EOBSBoundsType BoundsType, float BoundsWidth, float BoundsHeight, int32 BoundsAlignment = 0) | Set bounding-box behavior. |
GetSceneItemId | (FString SceneName, FString SourceName) | Resolve a source name to its numeric scene-item id. |
Scene Item CRUD
| Function | Signature / Params | Description |
|---|
CreateSceneItem | (FString SceneName, FString SourceName, bool bEnabled = true) | Add an existing source to a scene. |
RemoveSceneItem | (FString SceneName, int32 SceneItemId) | Remove an item from a scene. |
DuplicateSceneItem | (FString SceneName, int32 SceneItemId, FString DestinationSceneName = "") | Duplicate an item (optionally into another scene). |
Scene Item Lock / Z-Order / Blend
| Function | Signature / Params | Description |
|---|
GetSceneItemLocked | (FString SceneName, int32 SceneItemId) | Fetch the locked state. |
SetSceneItemLocked | (FString SceneName, int32 SceneItemId, bool bLocked) | Set the locked state. |
GetSceneItemIndex | (FString SceneName, int32 SceneItemId) | Fetch z-order index (0 = back). |
SetSceneItemIndex | (FString SceneName, int32 SceneItemId, int32 ItemIndex) | Set z-order index (0 = back). |
GetSceneItemBlendMode | (FString SceneName, int32 SceneItemId) | Fetch the blend mode. |
SetSceneItemBlendMode | (FString SceneName, int32 SceneItemId, EOBSBlendMode BlendMode) | Set the blend mode. |
Recording
| Function | Signature / Params | Description |
|---|
StartRecord | () | Start recording. |
StopRecord | () | Stop recording. |
ToggleRecord | () | Toggle recording on/off. |
PauseRecord | () | Pause the active recording. |
ResumeRecord | () | Resume a paused recording. |
ToggleRecordPause | () | Toggle pause/resume. |
GetRecordStatus | () | Fetch recording status. |
GetRecordDirectory | () | Fetch the record directory (fires OnRecordDirectoryReceived). |
SetRecordDirectory | (FString Directory) | Set the record directory (effective next recording). |
GetCachedRecordDirectory | () → FString | (Pure) Cached record directory. |
SplitRecordFile | () | Split the active recording into a new file. |
CreateRecordChapter | (FString ChapterName = "") | Add a chapter marker (Hybrid MP4, OBS 30.2.0+ only). |
Streaming
| Function | Signature / Params | Description |
|---|
StartStream | () | Start streaming. |
StopStream | () | Stop streaming. |
ToggleStream | () | Toggle streaming on/off. |
GetStreamStatus | () | Fetch streaming status. |
SendStreamCaption | (FString CaptionText) | Send CEA-608 caption text (stream must be active). |
Virtual Camera
| Function | Signature / Params | Description |
|---|
StartVirtualCam | () | Start the virtual camera. |
StopVirtualCam | () | Stop the virtual camera. |
ToggleVirtualCam | () | Toggle the virtual camera. |
GetVirtualCamStatus | () | Fetch virtual-camera status. |
IsVirtualCamActive | () → bool | (Pure) Cached virtual-cam active state. |
Replay Buffer
| Function | Signature / Params | Description |
|---|
StartReplayBuffer | () | Start the replay buffer. |
StopReplayBuffer | () | Stop the replay buffer. |
ToggleReplayBuffer | () | Toggle the replay buffer. |
SaveReplayBuffer | () | Save the current replay buffer contents to disk. |
GetReplayBufferStatus | () | Fetch replay-buffer status. |
IsReplayBufferActive | () → bool | (Pure) Cached replay-buffer active state. |
Generic Outputs
| Function | Signature / Params | Description |
|---|
GetOutputList | () | Fetch the list of all outputs. |
GetOutputStatus | (FString OutputName) | Fetch a specific output’s status. |
GetOutputSettings | (FString OutputName) | Fetch a specific output’s settings. |
SetOutputSettings | (FString OutputName, FString JsonSettings) | Set an output’s settings from JSON. |
StartOutput | (FString OutputName) | Start a specific output. |
StopOutput | (FString OutputName) | Stop a specific output. |
ToggleOutput | (FString OutputName) | Toggle a specific output. |
GetCachedOutputs | () → TArray<FOBSOutput> | (Pure) Cached output list. |
Audio
| Function | Signature / Params | Description |
|---|
GetInputList | (FString InputKind = "") | Fetch the input list, optionally filtered by kind. |
SetInputMute | (FString InputName, bool bMuted) | Set an input’s mute state. |
ToggleInputMute | (FString InputName) | Toggle an input’s mute. |
SetInputVolume | (FString InputName, float VolumeDb) | Set an input’s volume in dB. |
SetVolumeMetersEnabled | (bool bEnable) | Opt into the high-volume InputVolumeMeters event (disabled by default). |
SetInputActiveStateEventsEnabled | (bool bEnable) | Opt into the InputActiveStateChanged event (disabled by default). |
Advanced Audio
| Function | Signature / Params | Description |
|---|
GetInputAudioBalance | (FString InputName) | Fetch stereo balance (0=L, 0.5=C, 1=R). |
SetInputAudioBalance | (FString InputName, float Balance) | Set stereo balance. |
GetInputAudioSyncOffset | (FString InputName) | Fetch sync offset in ms. |
SetInputAudioSyncOffset | (FString InputName, int32 OffsetMs) | Set sync offset (-950 to 20000 ms). |
GetInputAudioMonitorType | (FString InputName) | Fetch the audio monitor type. |
SetInputAudioMonitorType | (FString InputName, EOBSMonitorType MonitorType) | Set the audio monitor type. |
GetInputAudioTracks | (FString InputName) | Fetch per-track enable states. |
SetInputAudioTracks | (FString InputName, FOBSAudioTracks Tracks) | Set all track enable states. |
SetInputAudioTrack | (FString InputName, int32 TrackNumber, bool bEnabled) | Set a single track (1 through 6) enable state. |
GetSpecialInputs | () | Fetch the default desktop/mic audio devices. |
GetCachedSpecialInputs | () → FOBSSpecialInputs | (Pure) Cached special inputs. |
Mic / Voice-Activity Detection
| Function | Signature / Params | Description |
|---|
EnableMicActivityDetection | (FString InputName, float ThresholdDb = -40, float AttackSeconds = 0.05, float ReleaseSeconds = 0.5) | Start debounced talking/idle detection (auto-enables volume meters). |
DisableMicActivityDetection | (FString InputName) | Stop detection for an input (leaves meters subscribed). |
IsMicActive | (FString InputName) → bool | (Pure) Current debounced talking state (false if not registered). |
| Function | Signature / Params | Description |
|---|
CreateInput | (FString SceneName, FString InputName, FString InputKind, FString InputSettingsJson = "", bool bSceneItemEnabled = true) | Create a new input and add it to a scene. |
RemoveInput | (FString InputName) | Remove an input (must not be in use). |
SetInputName | (FString InputName, FString NewInputName) | Rename an input. |
GetInputKindList | (bool bUnversioned = false) | Fetch available input kinds. |
GetCachedInputKinds | () → TArray<FString> | (Pure) Cached input-kind list. |
| Function | Signature / Params | Description |
|---|
FetchInputSettings | (FString InputName) | Fetch an input’s current settings (fires handler event). |
SetInputSettings | (FString InputName, FString SettingsJson, bool bOverlay = true) | Set input settings from JSON. |
SetTextSourceText | (FString InputName, FString NewText) | Convenience: set a text source’s text. |
SetBrowserSourceUrl | (FString InputName, FString NewUrl) | Convenience: set a browser source’s URL. |
SetImageSourceFile | (FString InputName, FString NewFilePath) | Convenience: set an image source’s file path. |
SetMediaSourceFile | (FString InputName, FString NewFilePath, bool bLooping = false) | Convenience: set a media source’s file path. |
SetColorSourceColor | (FString InputName, int64 Color) | Convenience: set a color source’s color (ABGR as int64). |
The Subsystem does not expose media-playback verbs directly. Reach media playback control (play/pause/stop/restart, seek, status) via the media inputs handler:
OBS->GetMediaInputs()->...
See Handlers API for UInhyeongOBSMediaInputs.
Studio Mode
| Function | Signature / Params | Description |
|---|
GetStudioModeEnabled | () | Fetch Studio Mode enabled state. |
SetStudioModeEnabled | (bool bEnabled) | Enable/disable Studio Mode. |
IsStudioModeEnabled | () → bool | (Pure) Cached Studio Mode state. |
GetCurrentPreviewScene | () | Fetch the preview scene. |
SetCurrentPreviewScene | (FString SceneName) | Set the preview scene. |
TriggerStudioModeTransition | () | Push the preview scene to program. |
GetPreviewSceneName | () → FString | (Pure) Cached preview scene name. |
Transitions
| Function | Signature / Params | Description |
|---|
GetSceneTransitionList | () | Fetch the transition list. |
GetCurrentSceneTransition | () | Fetch the active transition. |
SetCurrentSceneTransition | (FString TransitionName) | Set the active transition. |
SetCurrentSceneTransitionDuration | (int32 DurationMs) | Set the transition duration. |
GetCurrentTransitionName | () → FString | (Pure) Cached active transition name. |
GetCurrentTransitionDuration | () → int32 | (Pure) Cached transition duration (ms). |
IsTransitionActive | () → bool | (Pure) Cached “transition in progress” state. |
Filters
The Subsystem does not surface filter CRUD directly. Reach source-filter management (create/remove/rename/reorder, enable, settings) via the filters handler:
OBS->GetFilters()->...
Filter events are re-broadcast on the Subsystem (see Events). See Handlers API for UInhyeongOBSFilters.
Screenshots
The Subsystem does not surface screenshot capture methods directly. Reach them via the screenshots handler:
OBS->GetScreenshots()->...
The screenshot result delegates are re-broadcast on the Subsystem (OnScreenshotCaptured / OnScreenshotSaved), but the capture methods live on the handler. See Handlers API for UInhyeongOBSScreenshots.
Game Events (engine → OBS)
| Function | Signature / Params | Description |
|---|
EmitGameEvent | (FString EventName, FString PayloadJson, FString Realm = "inhyeongobs") → bool | Emit a namespaced CustomEvent to OBS. Returns false if not connected or payload isn’t valid JSON. |
EmitGameEventMap | (FString EventName, TMap<FString,FString> Payload, FString Realm = "inhyeongobs") | Map convenience: each key/value becomes a JSON string field under payload. |
Handler Accessors
These BlueprintPure getters return the domain handlers owned by the client. Use them to reach handler-level methods not surfaced directly on the Subsystem (see Handlers API).
| Function | Returns | Domain |
|---|
GetOutputs | UInhyeongOBSOutputs* | Stream, Record, VirtualCam, ReplayBuffer. |
GetScenes | UInhyeongOBSScenes* | Scene switching, scene items. |
GetAudio | UInhyeongOBSAudio* | Input list, volume, mute, meters. |
GetInputSettings | UInhyeongOBSInputSettings* | Text/browser/image/media source settings. |
GetMediaInputs | UInhyeongOBSMediaInputs* | Media source playback control. |
GetStudioMode | UInhyeongOBSStudioMode* | Preview scene, studio transitions, T-Bar. |
GetTransitions | UInhyeongOBSTransitions* | Scene transitions, duration, settings. |
GetFilters | UInhyeongOBSFilters* | Source filter management. |
GetScreenshots | UInhyeongOBSScreenshots* | Capture screenshots to base64 or file. |
GetConfig | UInhyeongOBSConfig* | Scene collections, profiles, video settings, persistent data. |
The UInhyeongOBSGeneral handler (stats, hotkeys, vendor requests) has no GetGeneral() accessor on the Subsystem, so reach it via GetClient()->GetGeneral().
Events
All of the Subsystem’s event delegates (e.g. OnConnected, OnCurrentSceneChanged, OnRecordStateChanged, OnMicActivityChanged) are documented in Events. Every Blueprint event has a native C++ counterpart with a Native suffix for lambda binding (see Native Delegates).