Skip to content

Desuq Cafe

Documentation menu

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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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.

Scene Item Transforms

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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).

Inputs (CRUD)

FunctionSignature / ParamsDescription
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.

Input Settings

FunctionSignature / ParamsDescription
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).

Media

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

FunctionSignature / ParamsDescription
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

FunctionSignature / ParamsDescription
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)

FunctionSignature / ParamsDescription
EmitGameEvent(FString EventName, FString PayloadJson, FString Realm = "inhyeongobs") → boolEmit 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).

FunctionReturnsDomain
GetOutputsUInhyeongOBSOutputs*Stream, Record, VirtualCam, ReplayBuffer.
GetScenesUInhyeongOBSScenes*Scene switching, scene items.
GetAudioUInhyeongOBSAudio*Input list, volume, mute, meters.
GetInputSettingsUInhyeongOBSInputSettings*Text/browser/image/media source settings.
GetMediaInputsUInhyeongOBSMediaInputs*Media source playback control.
GetStudioModeUInhyeongOBSStudioMode*Preview scene, studio transitions, T-Bar.
GetTransitionsUInhyeongOBSTransitions*Scene transitions, duration, settings.
GetFiltersUInhyeongOBSFilters*Source filter management.
GetScreenshotsUInhyeongOBSScreenshots*Capture screenshots to base64 or file.
GetConfigUInhyeongOBSConfig*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).