Handlers API
The plugin splits OBS control into 11 domain handlers, each a UInhyeongOBSHandlerBase subclass owned by the central UInhyeongOBSWebSocketClient. A handler caches its own domain state, sends requests through the client, and fires both a Blueprint-assignable dynamic delegate (FOBSOn*) and a matching native C++ delegate (FOBSOn*Native) for every event. Every BlueprintAssignable On* delegate listed below has an identically-named On*Native C++ counterpart (suffix Native) you can bind from C++ via AddSP / AddLambda.
Reaching a handler. From C++ or Blueprint, get the client and call its typed accessor:
UInhyeongOBSScenes* Scenes = Subsystem->GetClient()->GetScenes();
Scenes->SetCurrentProgramScene(TEXT("Gameplay"));
The client accessors are GetScenes(), GetAudio(), GetOutputs(), GetInputSettings(), GetMediaInputs(), GetStudioMode(), GetTransitions(), GetFilters(), GetScreenshots(), GetConfig(), and GetGeneral(). Handlers are created lazily on first access.
Many of the most common operations are also mirrored as convenience methods on the Subsystem API (e.g. scene switching, recording, mute/volume) so Blueprints never need to touch the handler. Where a Subsystem mirror exists it is noted under each handler. Methods only available on the handler (no Subsystem mirror) include replay collision-proofing (Outputs), persistent data (Config), the T-Bar (StudioMode), device-property enumeration (InputSettings), and game-event emission (General). For the full event catalog and signatures see Events.
Methods that take a TSharedPtr<FJsonObject> are C++-only. Their *FromString siblings are the Blueprint-friendly equivalents that accept a JSON string.
UInhyeongOBSScenes
Scene switching, scene CRUD, groups, scene items (sources), z-order/lock/blend, and full scene-item transforms. Reached via GetClient()->GetScenes(). Common operations are mirrored on the Subsystem.
| Function | Params | Description |
|---|---|---|
GetSceneList | None | Request the scene list (fires OnSceneListUpdated). |
SetCurrentProgramScene | SceneName | Switch the program scene by name. |
GetCurrentProgramScene | None | Request the current program scene. |
CreateScene | SceneName | Create a new (uniquely-named) scene. |
RemoveScene | SceneName | Remove a scene by name. |
RemoveSceneByUuid | SceneUuid | Remove a scene by UUID. |
SetSceneName | SceneName, NewSceneName | Rename a scene. |
SetSceneNameByUuid | SceneUuid, NewSceneName | Rename a scene by UUID. |
GetGroupList | None | List all groups. |
GetGroupSceneItemList | GroupName | List items within a group. |
GetCachedGroups | → TArray<FString> | Cached group names. |
GetSceneItemSource | SceneName, SceneItemId | Get the source backing a scene item. |
GetSourceActive | SourceName | Get a source’s active/show state. |
GetSourceActiveByUuid | SourceUuid | Same, by UUID. |
GetSceneTransitionOverride | SceneName | Fetch a scene’s transition override. |
SetSceneTransitionOverride | SceneName, TransitionName, TransitionDuration=-1 | Set a scene’s transition override (empty name to clear). |
ClearSceneTransitionOverride | SceneName | Clear a scene’s transition override. |
GetCachedTransitionOverride | SceneName, OutOverride → bool | Read a cached transition override. |
FetchAllTransitionOverrides | None | Fetch overrides for all cached scenes. |
GetCurrentSceneName | → FString | Cached current program scene name. |
GetCachedScenes | → TArray<FOBSScene> | Cached scene list. |
GetCachedScenesWithItems | → TArray<FOBSSceneWithItems> | Cached scenes plus their items. |
GetSceneItemList | SceneName | List scene items (sources) in a scene. |
SetSceneItemEnabled | SceneName, SceneItemId, bEnabled | Show/hide a scene item. |
GetSceneItemId | SceneName, SourceName | Resolve a source name to its numeric scene-item id. |
CreateSceneItem | SceneName, SourceName, bEnabled=true | Add an existing source to a scene. |
RemoveSceneItem | SceneName, SceneItemId | Remove a scene item (reference only). |
DuplicateSceneItem | SceneName, SceneItemId, DestinationSceneName="" | Duplicate a scene item (reference). |
GetSceneItemLocked | SceneName, SceneItemId | Get a scene item’s lock state. |
SetSceneItemLocked | SceneName, SceneItemId, bLocked | Lock/unlock a scene item. |
GetSceneItemIndex | SceneName, SceneItemId | Get a scene item’s z-order index. |
SetSceneItemIndex | SceneName, SceneItemId, SceneItemIndex | Set a scene item’s z-order index. |
GetSceneItemBlendMode | SceneName, SceneItemId | Get a scene item’s blend mode. |
SetSceneItemBlendMode | SceneName, SceneItemId, BlendMode | Set a scene item’s blend mode (EOBSBlendMode). |
GetSceneItemTransform | SceneName, SceneItemId | Fetch a scene item’s transform. |
SetSceneItemTransform | SceneName, SceneItemId, Transform | Apply a full FOBSSceneItemTransform. |
SetSceneItemPosition | SceneName, SceneItemId, X, Y | Set position only. |
SetSceneItemRotation | SceneName, SceneItemId, Rotation | Set rotation only (degrees). |
SetSceneItemScale | SceneName, SceneItemId, ScaleX, ScaleY | Set scale only. |
SetSceneItemCrop | SceneName, SceneItemId, Left, Top, Right, Bottom | Set crop only. |
SetSceneItemBounds | SceneName, SceneItemId, BoundsType, BoundsWidth, BoundsHeight, BoundsAlignment=0 | Set bounding-box properties. |
GetCachedSceneItemTransform | SceneName, SceneItemId, OutTransform → bool | Read a cached transform. |
FetchSceneItemTransforms | SceneName | Cache transforms for all items in a scene. |
FetchAllSceneItemTransforms | None | Cache transforms for all items in all scenes (fires OnAllTransformsFetched). |
IsTransformCached | SceneName, SceneItemId → bool | Whether a transform is cached. |
SetTransformEventsEnabled | bEnable | Opt into the high-volume SceneItemTransformChanged event. |
AreTransformEventsEnabled | → bool | Whether transform events are subscribed. |
RefreshAllSceneData | None | Refresh all scene data. |
GetCachedTransformCount | → int32 | Diagnostic count of cached transforms. |
GetCachedTransitionOverrideCount | → int32 | Diagnostic count of cached overrides. |
C++-only:
SetSceneItemTransformFromJsonplus static helpersTransformToJson,JsonToTransform,BoundsTypeToString/StringToBoundsType,BlendModeToString/StringToBlendMode.
| Event | Params | Description |
|---|---|---|
OnSceneListUpdated | Scenes | Scene list changed. |
OnAllTransformsFetched | Scenes | FetchAllSceneItemTransforms completed. |
OnCurrentSceneChanged | SceneName | Program scene changed. |
OnSceneItemTransformChanged | SceneName, SceneItemId, Transform | A scene item’s transform changed (requires SetTransformEventsEnabled(true)). |
OnSceneItemCreated | scene-item details | A source was added to a scene. |
OnSceneItemRemoved | scene-item details | A scene item was removed. |
OnSceneItemLockStateChanged | lock details | A scene item’s lock state changed. |
OnSceneItemEnableStateChanged | enable details | A scene item’s visibility changed. |
OnSceneItemListReindexed | SceneName | Scene items were reordered. |
OnSceneCreated | scene details | A scene was created. |
OnSceneRemoved | scene details | A scene was removed. |
OnSceneNameChanged | rename details | A scene was renamed. |
OnTransitionOverrideReceived | override data | A scene’s transition override arrived. |
UInhyeongOBSAudio
Inputs, mute, volume (dB and multiplier), advanced audio (balance, sync offset, monitor type, tracks), special inputs, input CRUD, and voice-activity opt-ins. Reached via GetClient()->GetAudio(). Mute/volume and input-list helpers are mirrored on the Subsystem.
| Function | Params | Description |
|---|---|---|
GetInputList | InputKind="" | List inputs, optionally filtered by kind. |
GetCachedInputs | → TArray<FOBSInput> | Cached input list. |
GetCachedInput | InputName, OutInput → bool | One cached input by name. |
RefreshAllAudioInfo | None | Fetch volume/mute for all cached audio inputs. |
SetInputMute | InputName, bMuted | Set mute state. |
ToggleInputMute | InputName | Toggle mute. |
GetInputMute | InputName | Query mute (updates cache + fires event). |
SetInputVolume | InputName, VolumeDb | Set volume in dB. |
SetInputVolumeMultiplier | InputName, VolumeMul | Set volume as a multiplier. |
GetInputVolume | InputName | Query volume (updates cache + fires event). |
AdjustInputVolume | InputName, DeltaDb | Relative volume change in dB. |
RefreshAllAdvancedAudioInfo | None | Fetch balance/sync/monitor/tracks for all cached inputs. |
SetVolumeMetersEnabled | bEnable | Opt into the high-volume InputVolumeMeters stream (drives OnInputVolumeMeters). |
SetInputActiveStateEventsEnabled | bEnable | Opt into InputActiveStateChanged (drives OnInputActiveStateChanged). |
GetLastVolumeMeters | → TArray<FOBSInputVolumeMeter> | Most recent volume-meter frame. |
GetInputAudioBalance | InputName | Query stereo balance. |
SetInputAudioBalance | InputName, Balance | Set balance (0=left, 0.5=center, 1=right). |
GetInputAudioSyncOffset | InputName | Query A/V sync offset (ms). |
SetInputAudioSyncOffset | InputName, OffsetMs | Set sync offset (-950..20000, may be negative). |
GetInputAudioMonitorType | InputName | Query monitor type. |
SetInputAudioMonitorType | InputName, MonitorType | Set monitor type (EOBSMonitorType). |
GetInputAudioTracks | InputName | Query audio-track enable states. |
SetInputAudioTracks | InputName, Tracks | Set all tracks (FOBSAudioTracks, tracks 1-6). |
SetInputAudioTrack | InputName, TrackNumber, bEnabled | Set a single track (1-6). |
GetSpecialInputs | None | Get default desktop/mic input names. |
GetCachedSpecialInputs | → FOBSSpecialInputs | Cached special inputs. |
CreateInputFromString | SceneName, InputName, InputKind, InputSettingsJson="", bSceneItemEnabled=true | Create a new input + add to a scene. |
RemoveInput | InputName | Remove an input (fails if still in use). |
SetInputName | InputName, NewInputName | Rename an input. |
GetInputKindList | bUnversioned=false | List available input kinds. |
GetCachedInputKinds | → TArray<FString> | Cached input kinds. |
SupportsAdvancedAudioProperties | InputKind → bool | (static) Whether a kind supports balance/sync/tracks/monitor. |
IsAudioInputKind | InputKind → bool | (static) Whether a kind is an audio type. |
C++-only: the
*ByUuidvariants (GetInputAudioBalanceByUuid, etc.),CreateInput, andRemoveInputByUuid.
| Event | Params | Description |
|---|---|---|
OnInputListUpdated | Inputs | Input list changed. |
OnInputMuteStateChanged | InputName, bMuted | An input’s mute changed. |
OnInputVolumeChanged | InputName, VolumeDb, VolumeMul | An input’s volume changed. |
OnInputVolumeMeters | Meters | High-volume per-input levels (requires SetVolumeMetersEnabled(true)). |
OnInputActiveStateChanged | InputName, bVideoActive | An input’s video-active state changed (requires opt-in). |
OnInputCreated | input details | An input was created. |
OnInputRemoved | input details | An input was removed. |
OnInputNameChanged | rename details | An input was renamed. |
OnInputKindListReceived | kinds | Input-kind list arrived. |
OnInputAudioBalanceChanged | balance | Balance changed/retrieved. |
OnInputAudioSyncOffsetChanged | offset | Sync offset changed/retrieved. |
OnInputAudioTracksChanged | tracks | Tracks changed/retrieved. |
OnInputAudioMonitorTypeChanged | monitor type | Monitor type changed/retrieved. |
OnSpecialInputsReceived | special inputs | Special inputs retrieved. |
UInhyeongOBSOutputs
Streaming, recording (incl. pause/resume, split, chapters), virtual camera, replay buffer (incl. collision-proofing), record directory, generic outputs, and stream captions. Reached via GetClient()->GetOutputs(). Streaming/recording control is mirrored on the Subsystem, but replay collision-proofing is handler-only.
| Function | Params | Description |
|---|---|---|
StartStream / StopStream / ToggleStream | None | Streaming control. |
GetStreamStatus | None | Request stream status. |
IsStreaming | → bool | Cached streaming flag. |
GetLastStreamStatus | → FOBSStreamStatus | Last stream status. |
StartRecord / StopRecord / ToggleRecord | None | Recording control. |
PauseRecord / ResumeRecord / ToggleRecordPause | None | Recording pause control. |
GetRecordStatus | None | Request record status. |
IsRecording | → bool | Cached recording flag. |
GetLastRecordStatus | → FOBSRecordStatus | Last record status. |
StartVirtualCam / StopVirtualCam / ToggleVirtualCam | None | Virtual camera control. |
GetVirtualCamStatus | None | Request virtual-cam status. |
IsVirtualCamActive | → bool | Cached virtual-cam flag. |
StartReplayBuffer / StopReplayBuffer / ToggleReplayBuffer | None | Replay buffer control. |
SaveReplayBuffer | None | Save the current replay buffer. |
GetReplayBufferStatus | None | Request replay-buffer status. |
IsReplayBufferActive | → bool | Cached replay-buffer flag. |
GetLastReplayPath | → FString | Path of the last saved replay (post-rename). |
SetReplayCollisionProofing | bEnable | Rename each saved replay with a unique timestamp suffix (handler-only). |
IsReplayCollisionProofingEnabled | → bool | Whether collision-proofing is on. |
SetNextReplayContextLabel | Label | One-shot label embedded in the next saved replay’s filename. |
SaveReplayBufferWithContext | ContextLabel | Set the next-replay label and save immediately. |
GetRecordDirectory | None | Request the record directory. |
SetRecordDirectory | Directory | Set the record directory (next recording). |
GetCachedRecordDirectory | → FString | Cached record directory. |
GetLastRecordedFilePath | → FString | Path of the last recorded file. |
SplitRecordFile | None | Split the recording into a new file. |
CreateRecordChapter | ChapterName="" | Add a chapter marker (OBS 30.2.0+, Hybrid MP4). |
GetOutputList | None | List all outputs. |
GetOutputStatus | OutputName | Status of one output. |
GetOutputSettings | OutputName | Settings of one output. |
SetOutputSettingsFromString | OutputName, JsonSettings | Set output settings from JSON. |
StartOutput / StopOutput / ToggleOutput | OutputName | Control a specific output. |
GetCachedOutputs | → TArray<FOBSOutput> | Cached output list. |
SendStreamCaption | CaptionText | Send CEA-608 caption text (stream must be active). |
C++-only:
SetOutputSettings(JSON object) plus static helpersBuildReplayFilenameandSanitizeReplayLabel.
| Event | Params | Description |
|---|---|---|
OnStreamStateChanged | state | Stream state changed. |
OnRecordStateChanged | state | Record state changed. |
OnRecordingStopped | output path | Recording stopped (with file path). |
OnVirtualCamStateChanged | state | Virtual-cam state changed. |
OnReplayBufferStateChanged | state | Replay-buffer state changed. |
OnReplayBufferSaved | saved path | Replay saved (final path after any rename). |
OnRecordFileChanged | new path | Record output rolled to a new file (split). |
OnRecordDirectoryReceived | directory | Record directory fetched. |
OnOutputListReceived | outputs | Output list fetched. |
OnOutputStatusReceived | status | Output status fetched. |
UInhyeongOBSInputSettings
Source settings for text/browser/image/media/color sources, default settings, and capture-device property access. Reached via GetClient()->GetInputSettings(). Button-press and list-property enumeration are handler-only.
| Function | Params | Description |
|---|---|---|
GetInputSettings | InputName | Fetch an input’s settings (fires OnInputSettingsReceivedNative). |
GetInputSettingsByUuid | InputUuid | Same, by UUID. |
SetInputSettingsFromString | InputName, InputSettingsJson, bOverlay=true | Apply settings from JSON. |
GetInputDefaultSettings | InputKind | Get default settings for a kind. |
PressInputPropertiesButton | InputName, PropertyName | Press a button-type property (e.g. capture-device activate/deactivate). |
GetInputPropertiesListPropertyItems | InputName, PropertyName | Enumerate a list-property’s items (device dropdown). Fires OnInputPropertyItemsReceived. |
GetCachedInputSettingsString | InputName → FString | Cached settings as JSON. |
HasCachedSettings | InputName → bool | Whether settings are cached. |
ClearCachedSettings | InputName | Clear one input’s cache. |
ClearAllCachedSettings | None | Clear the whole settings cache. |
SetTextSourceText | InputName, NewText | Set a text source’s text. |
SetBrowserSourceUrl | InputName, NewUrl | Set a browser source’s URL. |
SetImageSourceFile | InputName, NewFilePath | Set an image source’s file. |
SetMediaSourceFile | InputName, NewFilePath, bLooping=false | Set a media source’s file. |
SetColorSourceColor | InputName, Color | Set a color source’s color (ABGR int64). |
C++-only:
SetInputSettings/SetInputSettingsByUuid(JSON object) andGetCachedInputSettings(JSON object out-param).
| Event | Params | Description |
|---|---|---|
OnInputSettingsChanged | input details | An input’s settings changed. |
OnInputPropertyItemsReceived | property items | A list-property’s items (device dropdown) arrived. |
Native-only:
OnInputSettingsReceivedNativedelivers the actual settings JSON from aGetInputSettingscall.
UInhyeongOBSMediaInputs
Playback control, seeking, and status for media sources (VLC, Media Source). Reached via GetClient()->GetMediaInputs(). Defines the EOBSMediaInputAction and EOBSMediaState enums and the FOBSMediaInputStatus struct.
| Function | Params | Description |
|---|---|---|
GetMediaInputStatus | InputName | Query state/duration/cursor. |
GetCachedMediaInputStatus | InputName, OutStatus → bool | Last cached status. |
TriggerMediaInputAction | InputName, Action | Perform an EOBSMediaInputAction. |
PlayMedia / PauseMedia / StopMedia / RestartMedia | InputName | Playback shortcuts. |
NextMedia / PreviousMedia | InputName | Playlist navigation. |
SetMediaInputCursor | InputName, CursorMs | Seek to an absolute position (ms). |
OffsetMediaInputCursor | InputName, OffsetMs | Relative seek (ms). |
SeekToPercent | InputName, Percent | Seek to a fraction (0.0-1.0) of duration. |
Static helpers:
MediaInputActionToString,MediaInputActionFromString,ParseMediaState.
| Event | Params | Description |
|---|---|---|
OnMediaInputPlaybackStarted | InputName | Playback started. |
OnMediaInputPlaybackEnded | InputName | Playback ended. |
OnMediaInputActionTriggered | InputName, Action | A media action fired. |
OnMediaInputStatusReceived | Status | Media status arrived. |
UInhyeongOBSStudioMode
Studio Mode toggle, preview scene, and transitions including manual T-Bar scrubbing. Reached via GetClient()->GetStudioMode(). SetTBarPosition is handler-only.
| Function | Params | Description |
|---|---|---|
GetStudioModeEnabled | None | Query Studio Mode state. |
SetStudioModeEnabled | bEnabled | Enable/disable Studio Mode. |
IsStudioModeEnabled | → bool | Cached Studio Mode flag. |
GetCurrentPreviewScene | None | Query the preview scene. |
SetCurrentPreviewScene | SceneName | Set the preview scene by name. |
SetCurrentPreviewSceneByUuid | SceneUuid | Set the preview scene by UUID. |
GetPreviewSceneName | → FString | Cached preview scene name. |
GetPreviewSceneUuid | → FString | Cached preview scene UUID. |
TriggerStudioModeTransition | None | Transition Preview to Program. |
TriggerStudioModeTransitionWithOptions | TransitionName, TransitionDurationMs=-1 | Transition with a specific transition/duration. |
SetTBarPosition | Position, bRelease=true | Scrub the T-Bar (0=preview, 1=transitioned). Pass bRelease=false to hold it, for example on a Sequencer float track. |
| Event | Params | Description |
|---|---|---|
OnStudioModeStateChanged | bEnabled | Studio Mode toggled. |
OnCurrentPreviewSceneChanged | scene | Preview scene changed. |
UInhyeongOBSTransitions
The current transition, its duration and settings, and live transition progress. Reached via GetClient()->GetTransitions().
| Function | Params | Description |
|---|---|---|
GetSceneTransitionList | None | List available transitions (fires OnTransitionListUpdated). |
GetCachedTransitions | → TArray<FOBSTransition> | Cached transition list. |
GetCurrentSceneTransition | None | Query the current transition. |
SetCurrentSceneTransition | TransitionName | Set the current transition. |
GetCurrentTransitionInfo | → FOBSCurrentTransitionInfo | Cached current-transition info. |
GetCurrentTransitionName | → FString | Cached current transition name. |
SetCurrentSceneTransitionDuration | DurationMs | Set the transition duration. |
GetCurrentTransitionDuration | → int32 | Cached transition duration (ms). |
SetCurrentSceneTransitionSettingsFromString | SettingsJson, bOverlay=true | Set transition-specific settings from JSON. |
GetCurrentSceneTransitionCursor | None | Query the active transition’s cursor. |
GetCachedTransitionCursor | → float | Last cursor value (0.0-1.0, or -1). |
IsTransitionActive | → bool | Whether a transition is in progress. |
C++-only:
SetCurrentSceneTransitionSettings(JSON object).
| Event | Params | Description |
|---|---|---|
OnCurrentTransitionChanged | name | Current transition changed. |
OnTransitionDurationChanged | duration | Transition duration changed. |
OnTransitionStarted | name | A transition started. |
OnTransitionEnded | name | A transition ended (cut point). |
OnTransitionVideoEnded | name | A transition’s video ended (Stingers). |
OnTransitionListUpdated | list | Transition list changed. |
UInhyeongOBSFilters
Source-filter CRUD, enable/reorder, and per-filter settings on inputs, scenes, and groups. Reached via GetClient()->GetFilters().
| Function | Params | Description |
|---|---|---|
GetSourceFilterKindList | None | List available filter kinds. |
GetCachedFilterKinds | → TArray<FString> | Cached filter kinds. |
GetSourceFilterList | SourceName | List a source’s filters. |
GetSourceFilterListByUuid | SourceUuid | Same, by UUID. |
GetCachedFiltersForSource | SourceName → TArray<FOBSSourceFilter> | Cached filters for a source. |
HasCachedFiltersForSource | SourceName → bool | Whether filters are cached. |
ClearCachedFiltersForSource | SourceName | Clear one source’s filter cache. |
ClearAllCachedFilters | None | Clear the whole filter cache. |
GetSourceFilter | SourceName, FilterName | Get one filter’s info. |
GetSourceFilterDefaultSettings | FilterKind | Default settings for a filter kind. |
CreateSourceFilterFromString | SourceName, FilterName, FilterKind, FilterSettingsJson="" | Create a filter (JSON settings). |
RemoveSourceFilter | SourceName, FilterName | Remove a filter. |
SetSourceFilterName | SourceName, FilterName, NewFilterName | Rename a filter. |
SetSourceFilterIndex | SourceName, FilterName, FilterIndex | Reorder a filter in the chain. |
SetSourceFilterEnabled | SourceName, FilterName, bEnabled | Enable/disable a filter. |
SetSourceFilterSettingsFromString | SourceName, FilterName, FilterSettingsJson, bOverlay=true | Set filter settings from JSON. |
C++-only:
CreateSourceFilterandSetSourceFilterSettings(JSON object).
| Event | Params | Description |
|---|---|---|
OnSourceFilterCreated | filter details | A filter was created. |
OnSourceFilterRemoved | filter details | A filter was removed. |
OnSourceFilterNameChanged | rename details | A filter was renamed. |
OnSourceFilterSettingsChanged | filter details | A filter’s settings changed. |
OnSourceFilterEnableStateChanged | enable details | A filter’s enable state changed. |
OnSourceFilterListReindexed | SourceName | A source’s filter list was reordered. |
Native-only:
OnSourceFilterListReceivedNativefires after aGetSourceFilterListresponse is cached (used by editor combobox refresh).
UInhyeongOBSScreenshots
Capture screenshots to base64 or save to the OBS machine’s filesystem, plus texture-conversion utilities. Reached via GetClient()->GetScreenshots(). This handler has no OBS events and is pure request/response. Its On* delegates are handler-level only and not mirrored on the Subsystem.
| Function | Params | Description |
|---|---|---|
GetSourceScreenshot | SourceName, ImageFormat="png" | Capture to base64 (fires OnScreenshotCaptured). |
GetSourceScreenshotByUuid | SourceUuid, ImageFormat="png" | Same, by UUID. |
GetSourceScreenshotWithOptions | Request | Capture with full FOBSScreenshotRequest control. |
GetSourceScreenshotScaled | SourceName, ImageFormat, Width, Height, CompressionQuality=-1 | Capture scaled. |
SaveSourceScreenshot | SourceName, FilePath, ImageFormat="png" | Save to a file on the OBS machine (fires OnScreenshotSaved). |
SaveSourceScreenshotByUuid | SourceUuid, FilePath, ImageFormat="png" | Same, by UUID. |
SaveSourceScreenshotWithOptions | Request | Save with full control (Request.ImageFilePath required). |
SaveSourceScreenshotScaled | SourceName, FilePath, ImageFormat, Width, Height, CompressionQuality=-1 | Save scaled. |
CreateTextureFromBase64 | Base64ImageData → UTexture2D* | (static) Decode base64 to a texture. |
CreateTextureFromScreenshotResult | Result → UTexture2D* | (static) Texture from an FOBSScreenshotResult. |
DecodeBase64ImageData | Base64ImageData, OutBytes, OutFormat → bool | (static) Decode base64 to raw bytes. |
CreateTextureFromBytes | ImageBytes → UTexture2D* | (static) Texture from raw bytes. |
GetLastScreenshotResult | → FOBSScreenshotResult | Last captured result. |
GetLastSavedResult | → FOBSScreenshotSavedResult | Last saved result. |
IsCapturePending | → bool | Whether a capture is in flight. |
| Event | Params | Description |
|---|---|---|
OnScreenshotCaptured | result | Base64 screenshot ready. |
OnScreenshotSaved | result | Screenshot saved to the filesystem. |
UInhyeongOBSConfig
Scene collections, profiles, profile parameters, stream-service settings, video settings, and a plugin-owned persistent key/value store. Reached via GetClient()->GetConfig(). Persistent-data methods are handler-only.
| Function | Params | Description |
|---|---|---|
GetSceneCollectionList | None | List scene collections (fires OnSceneCollectionListChanged). |
SetCurrentSceneCollection | SceneCollectionName | Switch scene collection (causes a reload pause). |
CreateSceneCollection | SceneCollectionName | Create and switch to a new collection. |
GetCachedSceneCollections | → TArray<FString> | Cached collection names. |
GetCurrentSceneCollectionName | → FString | Cached current collection. |
GetProfileList | None | List profiles (fires OnProfileListChanged). |
SetCurrentProfile | ProfileName | Switch profile. |
CreateProfile | ProfileName | Create and switch to a profile. |
RemoveProfile | ProfileName | Remove a profile (not the active one). |
GetCachedProfiles | → TArray<FString> | Cached profile names. |
GetCurrentProfileName | → FString | Cached current profile. |
GetProfileParameter | ParameterCategory, ParameterName | Read a profile config parameter. |
SetProfileParameter | ParameterCategory, ParameterName, ParameterValue | Write a profile config parameter. |
GetStreamServiceSettings | None | Fetch stream-service settings (fires OnStreamServiceSettingsReceived). |
SetStreamServiceSettings | Settings | Set stream-service settings (FOBSStreamServiceSettings). |
SetStreamServiceSettingsFromString | ServiceType, JsonSettings | Set from JSON. |
SetSimpleRTMPSettings | Server, StreamKey | Quick custom-RTMP setup. |
GetCachedStreamServiceSettings | → FOBSStreamServiceSettings | Cached settings. |
GetVideoSettings | None | Fetch video settings (fires OnVideoSettingsReceived). |
SetVideoSettings | Settings | Set video settings (not while streaming/recording). |
SetBaseResolution | Width, Height | Set canvas resolution. |
SetOutputResolution | Width, Height | Set scaled output resolution. |
SetFPS | FpsNumerator, FpsDenominator=1 | Set FPS as a fraction. |
GetCachedVideoSettings | → FOBSVideoSettings | Cached video settings. |
GetPersistentData | Realm, SlotName | Read a persistent slot (fires OnPersistentDataReceived). |
SetPersistentData | Realm, SlotName, SlotValueJson → bool | Write a slot from a JSON value (empty = null). Invalid JSON returns false and sends nothing. |
SetPersistentDataString | Realm, SlotName, SlotValue | Write a slot as a plain string. |
GetCachedPersistentData | Realm, SlotName, OutSlotValueJson → bool | Read a cached slot. |
RealmisEOBSDataRealm(GlobalorProfile). C++-only:SetStreamServiceSettingsRaw(JSON object).
| Event | Params | Description |
|---|---|---|
OnStreamServiceSettingsReceived | settings | Stream-service settings retrieved. |
OnVideoSettingsReceived | settings | Video settings retrieved. |
OnPersistentDataReceived | slot value | A persistent slot was retrieved. |
OnCurrentSceneCollectionChanging | name | Scene collection about to change. |
OnCurrentSceneCollectionChanged | name | Scene collection changed. |
OnSceneCollectionListChanged | list | Scene-collection list changed. |
OnCurrentProfileChanging | name | Profile about to change. |
OnCurrentProfileChanged | name | Profile changed. |
OnProfileListChanged | list | Profile list changed. |
UInhyeongOBSGeneral
Cross-domain operations: performance stats, hotkeys, vendor (third-party plugin) requests, custom/exit events, and outbound game-event emission. Reached via GetClient()->GetGeneral(). (OBS version is captured directly by the client via GetOBSVersion / IsOBSVersionAtLeast.) EmitGameEvent is forwarded on the Subsystem. The rest are handler-only.
| Function | Params | Description |
|---|---|---|
GetStats | None | Request performance stats (fires OnStatsReceived). |
GetCachedStats | → FOBSStats | Most recent stats. |
GetHotkeyList | None | Request all hotkey names (fires OnHotkeyListReceived). |
GetCachedHotkeys | → TArray<FString> | Cached hotkey names. |
TriggerHotkeyByName | HotkeyName, ContextName="" | Trigger a hotkey by name. |
TriggerHotkeyByKeySequence | KeyId, bShift=false, bControl=false, bAlt=false, bCommand=false | Trigger a hotkey by key id + modifiers. |
BroadcastCustomEvent | EventDataJson | Broadcast a custom event to other websocket clients. |
CallVendorRequest | VendorName, RequestType, RequestDataJson | Call a third-party plugin request (fires OnVendorResponseReceived). |
EmitGameEvent | EventName, PayloadJson, Realm="inhyeongobs" → bool | Emit a namespaced game event (returns false on invalid payload JSON). |
EmitGameEventMap | EventName, Payload (TMap), Realm="inhyeongobs" | Map-based convenience for EmitGameEvent. |
| Event | Params | Description |
|---|---|---|
OnStatsReceived | stats | Performance stats arrived. |
OnHotkeyListReceived | hotkeys | Hotkey list arrived. |
OnExitStarted | None | OBS is shutting down. |
OnVendorEvent | vendor payload | A vendor (plugin) event arrived. |
OnCustomEvent | custom payload | A custom event arrived from another client. |
OnVendorResponseReceived | vendor response | A CallVendorRequest reply arrived. |
See also
- Subsystem API: the GameInstance facade with ~100 convenience methods that wrap these handlers.
- Events: full event catalog, payload structs, and delegate signatures.