处理器 API
本插件将 OBS 控制拆分为 11 个域处理器,每个处理器均为 UInhyeongOBSHandlerBase 的子类,由中央 UInhyeongOBSWebSocketClient 持有。处理器会缓存自身域的状态、通过客户端发送请求,并为每个事件同时触发一个可在 Blueprint 中赋值的动态委托(FOBSOn*)和对应的原生 C++ 委托(FOBSOn*Native)。下方列出的每个 BlueprintAssignable On* 委托,都有一个同名的 On*Native C++ 对应版本(后缀 Native),可通过 AddSP / AddLambda 在 C++ 中绑定。
访问处理器。 在 C++ 或 Blueprint 中,获取客户端后调用其类型化访问器:
UInhyeongOBSScenes* Scenes = Subsystem->GetClient()->GetScenes();
Scenes->SetCurrentProgramScene(TEXT("Gameplay"));
客户端访问器包括 GetScenes()、GetAudio()、GetOutputs()、GetInputSettings()、GetMediaInputs()、GetStudioMode()、GetTransitions()、GetFilters()、GetScreenshots()、GetConfig() 和 GetGeneral()。处理器在首次访问时按需创建。
最常用的操作也作为便捷方法镜像到了 Subsystem API(例如场景切换、录制、静音/音量),因此 Blueprint 无需直接接触处理器。凡是存在 Subsystem 镜像的地方,均在各处理器下方注明。仅在处理器上可用(无 Subsystem 镜像)的方法包括:Replay Buffer 碰撞保护(Outputs)、持久化数据(Config)、T-Bar(StudioMode)、设备属性枚举(InputSettings)以及游戏事件发送(General)。完整的事件目录与签名,请参阅事件。
接受 TSharedPtr<FJsonObject> 的方法仅限 C++ 使用。其 *FromString 兄弟方法是接受 JSON 字符串的 Blueprint 友好等价版本。
UInhyeongOBSScenes
场景切换、场景增删改查、分组、场景项目(来源)、层级顺序/锁定/混合模式,以及完整的场景项目变换。通过 GetClient()->GetScenes() 访问。常用操作已镜像到 Subsystem。
| 函数 | 参数 | 描述 |
|---|---|---|
GetSceneList | 无 | 请求场景列表(触发 OnSceneListUpdated)。 |
SetCurrentProgramScene | SceneName | 按名称切换直播场景。 |
GetCurrentProgramScene | 无 | 请求当前直播场景。 |
CreateScene | SceneName | 创建一个新的(唯一命名的)场景。 |
RemoveScene | SceneName | 按名称删除场景。 |
RemoveSceneByUuid | SceneUuid | 按 UUID 删除场景。 |
SetSceneName | SceneName, NewSceneName | 重命名场景。 |
SetSceneNameByUuid | SceneUuid, NewSceneName | 按 UUID 重命名场景。 |
GetGroupList | 无 | 列出所有分组。 |
GetGroupSceneItemList | GroupName | 列出分组内的项目。 |
GetCachedGroups | → TArray<FString> | 已缓存的分组名称。 |
GetSceneItemSource | SceneName, SceneItemId | 获取场景项目对应的来源。 |
GetSourceActive | SourceName | 获取来源的激活/显示状态。 |
GetSourceActiveByUuid | SourceUuid | 同上,按 UUID。 |
GetSceneTransitionOverride | SceneName | 获取场景的转场覆盖。 |
SetSceneTransitionOverride | SceneName, TransitionName, TransitionDuration=-1 | 设置场景的转场覆盖(名称为空则清除)。 |
ClearSceneTransitionOverride | SceneName | 清除场景的转场覆盖。 |
GetCachedTransitionOverride | SceneName, OutOverride → bool | 读取已缓存的转场覆盖。 |
FetchAllTransitionOverrides | 无 | 获取所有已缓存场景的覆盖。 |
GetCurrentSceneName | → FString | 已缓存的当前直播场景名称。 |
GetCachedScenes | → TArray<FOBSScene> | 已缓存的场景列表。 |
GetCachedScenesWithItems | → TArray<FOBSSceneWithItems> | 已缓存的场景及其项目。 |
GetSceneItemList | SceneName | 列出场景中的场景项目(来源)。 |
SetSceneItemEnabled | SceneName, SceneItemId, bEnabled | 显示/隐藏场景项目。 |
GetSceneItemId | SceneName, SourceName | 将来源名称解析为其数字场景项目 ID。 |
CreateSceneItem | SceneName, SourceName, bEnabled=true | 将已有来源添加到场景。 |
RemoveSceneItem | SceneName, SceneItemId | 移除场景项目(仅移除引用)。 |
DuplicateSceneItem | SceneName, SceneItemId, DestinationSceneName="" | 复制场景项目(引用)。 |
GetSceneItemLocked | SceneName, SceneItemId | 获取场景项目的锁定状态。 |
SetSceneItemLocked | SceneName, SceneItemId, bLocked | 锁定/解锁场景项目。 |
GetSceneItemIndex | SceneName, SceneItemId | 获取场景项目的层级顺序索引。 |
SetSceneItemIndex | SceneName, SceneItemId, SceneItemIndex | 设置场景项目的层级顺序索引。 |
GetSceneItemBlendMode | SceneName, SceneItemId | 获取场景项目的混合模式。 |
SetSceneItemBlendMode | SceneName, SceneItemId, BlendMode | 设置场景项目的混合模式(EOBSBlendMode)。 |
GetSceneItemTransform | SceneName, SceneItemId | 获取场景项目的变换。 |
SetSceneItemTransform | SceneName, SceneItemId, Transform | 应用完整的 FOBSSceneItemTransform。 |
SetSceneItemPosition | SceneName, SceneItemId, X, Y | 仅设置位置。 |
SetSceneItemRotation | SceneName, SceneItemId, Rotation | 仅设置旋转(度)。 |
SetSceneItemScale | SceneName, SceneItemId, ScaleX, ScaleY | 仅设置缩放。 |
SetSceneItemCrop | SceneName, SceneItemId, Left, Top, Right, Bottom | 仅设置裁剪。 |
SetSceneItemBounds | SceneName, SceneItemId, BoundsType, BoundsWidth, BoundsHeight, BoundsAlignment=0 | 设置边界框属性。 |
GetCachedSceneItemTransform | SceneName, SceneItemId, OutTransform → bool | 读取已缓存的变换。 |
FetchSceneItemTransforms | SceneName | 缓存某场景中所有项目的变换。 |
FetchAllSceneItemTransforms | 无 | 缓存所有场景中所有项目的变换(触发 OnAllTransformsFetched)。 |
IsTransformCached | SceneName, SceneItemId → bool | 变换是否已缓存。 |
SetTransformEventsEnabled | bEnable | 启用高频 SceneItemTransformChanged 事件订阅。 |
AreTransformEventsEnabled | → bool | 是否已订阅变换事件。 |
RefreshAllSceneData | 无 | 刷新所有场景数据。 |
GetCachedTransformCount | → int32 | 已缓存变换数量(诊断用)。 |
GetCachedTransitionOverrideCount | → int32 | 已缓存覆盖数量(诊断用)。 |
仅限 C++:
SetSceneItemTransformFromJson以及静态辅助函数TransformToJson、JsonToTransform、BoundsTypeToString/StringToBoundsType、BlendModeToString/StringToBlendMode。
| 事件 | 参数 | 描述 |
|---|---|---|
OnSceneListUpdated | Scenes | 场景列表已更改。 |
OnAllTransformsFetched | Scenes | FetchAllSceneItemTransforms 已完成。 |
OnCurrentSceneChanged | SceneName | 直播场景已更改。 |
OnSceneItemTransformChanged | SceneName, SceneItemId, Transform | 场景项目的变换已更改(需调用 SetTransformEventsEnabled(true))。 |
OnSceneItemCreated | 场景项目详情 | 来源已添加到场景。 |
OnSceneItemRemoved | 场景项目详情 | 场景项目已移除。 |
OnSceneItemLockStateChanged | 锁定详情 | 场景项目的锁定状态已更改。 |
OnSceneItemEnableStateChanged | 启用详情 | 场景项目的可见性已更改。 |
OnSceneItemListReindexed | SceneName | 场景项目已重新排序。 |
OnSceneCreated | 场景详情 | 场景已创建。 |
OnSceneRemoved | 场景详情 | 场景已删除。 |
OnSceneNameChanged | 重命名详情 | 场景已重命名。 |
OnTransitionOverrideReceived | 覆盖数据 | 场景的转场覆盖已到达。 |
UInhyeongOBSAudio
输入、静音、音量(dB 与乘数)、高级音频(平衡、同步偏移、监听类型、音轨)、特殊输入、输入增删改查以及语音活动检测订阅。通过 GetClient()->GetAudio() 访问。静音/音量及输入列表辅助方法已镜像到 Subsystem。
| 函数 | 参数 | 描述 |
|---|---|---|
GetInputList | InputKind="" | 列出输入,可按输入类型过滤。 |
GetCachedInputs | → TArray<FOBSInput> | 已缓存的输入列表。 |
GetCachedInput | InputName, OutInput → bool | 按名称获取单个已缓存输入。 |
RefreshAllAudioInfo | 无 | 获取所有已缓存音频输入的音量/静音信息。 |
SetInputMute | InputName, bMuted | 设置静音状态。 |
ToggleInputMute | InputName | 切换静音。 |
GetInputMute | InputName | 查询静音(更新缓存并触发事件)。 |
SetInputVolume | InputName, VolumeDb | 以 dB 为单位设置音量。 |
SetInputVolumeMultiplier | InputName, VolumeMul | 以乘数方式设置音量。 |
GetInputVolume | InputName | 查询音量(更新缓存并触发事件)。 |
AdjustInputVolume | InputName, DeltaDb | 以 dB 为单位进行相对音量调整。 |
RefreshAllAdvancedAudioInfo | 无 | 获取所有已缓存输入的平衡/同步/监听/音轨信息。 |
SetVolumeMetersEnabled | bEnable | 启用高频 InputVolumeMeters 流(驱动 OnInputVolumeMeters)。 |
SetInputActiveStateEventsEnabled | bEnable | 启用 InputActiveStateChanged 订阅(驱动 OnInputActiveStateChanged)。 |
GetLastVolumeMeters | → TArray<FOBSInputVolumeMeter> | 最近一帧的音量表数据。 |
GetInputAudioBalance | InputName | 查询立体声平衡。 |
SetInputAudioBalance | InputName, Balance | 设置平衡(0=左,0.5=中,1=右)。 |
GetInputAudioSyncOffset | InputName | 查询音视频同步偏移(毫秒)。 |
SetInputAudioSyncOffset | InputName, OffsetMs | 设置同步偏移(-950..20000,可为负数)。 |
GetInputAudioMonitorType | InputName | 查询监听类型。 |
SetInputAudioMonitorType | InputName, MonitorType | 设置监听类型(EOBSMonitorType)。 |
GetInputAudioTracks | InputName | 查询音轨启用状态。 |
SetInputAudioTracks | InputName, Tracks | 设置所有音轨(FOBSAudioTracks,音轨 1-6)。 |
SetInputAudioTrack | InputName, TrackNumber, bEnabled | 设置单条音轨(1-6)。 |
GetSpecialInputs | 无 | 获取默认桌面/麦克风输入名称。 |
GetCachedSpecialInputs | → FOBSSpecialInputs | 已缓存的特殊输入。 |
CreateInputFromString | SceneName, InputName, InputKind, InputSettingsJson="", bSceneItemEnabled=true | 创建新输入并添加到场景。 |
RemoveInput | InputName | 删除输入(仍在使用中则失败)。 |
SetInputName | InputName, NewInputName | 重命名输入。 |
GetInputKindList | bUnversioned=false | 列出可用的输入类型。 |
GetCachedInputKinds | → TArray<FString> | 已缓存的输入类型。 |
SupportsAdvancedAudioProperties | InputKind → bool | (静态)该类型是否支持平衡/同步/音轨/监听。 |
IsAudioInputKind | InputKind → bool | (静态)该类型是否为音频类型。 |
仅限 C++:
*ByUuid变体(GetInputAudioBalanceByUuid等)、CreateInput以及RemoveInputByUuid。
| 事件 | 参数 | 描述 |
|---|---|---|
OnInputListUpdated | Inputs | 输入列表已更改。 |
OnInputMuteStateChanged | InputName, bMuted | 输入的静音状态已更改。 |
OnInputVolumeChanged | InputName, VolumeDb, VolumeMul | 输入的音量已更改。 |
OnInputVolumeMeters | Meters | 高频逐输入电平数据(需调用 SetVolumeMetersEnabled(true))。 |
OnInputActiveStateChanged | InputName, bVideoActive | 输入的视频激活状态已更改(需订阅)。 |
OnInputCreated | 输入详情 | 输入已创建。 |
OnInputRemoved | 输入详情 | 输入已删除。 |
OnInputNameChanged | 重命名详情 | 输入已重命名。 |
OnInputKindListReceived | 输入类型列表 | 输入类型列表已到达。 |
OnInputAudioBalanceChanged | 平衡 | 平衡已更改/已获取。 |
OnInputAudioSyncOffsetChanged | 偏移 | 同步偏移已更改/已获取。 |
OnInputAudioTracksChanged | 音轨 | 音轨已更改/已获取。 |
OnInputAudioMonitorTypeChanged | 监听类型 | 监听类型已更改/已获取。 |
OnSpecialInputsReceived | 特殊输入 | 特殊输入已获取。 |
UInhyeongOBSOutputs
推流、录制(含暂停/恢复、分割、章节标记)、Virtual Camera、Replay Buffer(含碰撞保护)、录制目录、通用输出,以及推流字幕。通过 GetClient()->GetOutputs() 访问。推流/录制控制已镜像到 Subsystem,但 Replay Buffer 碰撞保护仅在处理器上可用。
| 函数 | 参数 | 描述 |
|---|---|---|
StartStream / StopStream / ToggleStream | 无 | 推流控制。 |
GetStreamStatus | 无 | 请求推流状态。 |
IsStreaming | → bool | 已缓存的推流标志。 |
GetLastStreamStatus | → FOBSStreamStatus | 上次推流状态。 |
StartRecord / StopRecord / ToggleRecord | 无 | 录制控制。 |
PauseRecord / ResumeRecord / ToggleRecordPause | 无 | 录制暂停控制。 |
GetRecordStatus | 无 | 请求录制状态。 |
IsRecording | → bool | 已缓存的录制标志。 |
GetLastRecordStatus | → FOBSRecordStatus | 上次录制状态。 |
StartVirtualCam / StopVirtualCam / ToggleVirtualCam | 无 | 虚拟摄像头控制。 |
GetVirtualCamStatus | 无 | 请求虚拟摄像头状态。 |
IsVirtualCamActive | → bool | 已缓存的虚拟摄像头标志。 |
StartReplayBuffer / StopReplayBuffer / ToggleReplayBuffer | 无 | Replay Buffer 控制。 |
SaveReplayBuffer | 无 | 保存当前 Replay Buffer。 |
GetReplayBufferStatus | 无 | 请求 Replay Buffer 状态。 |
IsReplayBufferActive | → bool | 已缓存的 Replay Buffer 标志。 |
GetLastReplayPath | → FString | 上次保存的回放路径(重命名后)。 |
SetReplayCollisionProofing | bEnable | 为每次保存的回放添加唯一时间戳后缀(仅限处理器)。 |
IsReplayCollisionProofingEnabled | → bool | 是否启用了碰撞保护。 |
SetNextReplayContextLabel | Label | 嵌入到下一个保存回放文件名中的一次性标签。 |
SaveReplayBufferWithContext | ContextLabel | 设置下一个回放标签并立即保存。 |
GetRecordDirectory | 无 | 请求录制目录。 |
SetRecordDirectory | Directory | 设置录制目录(下次录制时生效)。 |
GetCachedRecordDirectory | → FString | 已缓存的录制目录。 |
GetLastRecordedFilePath | → FString | 上次录制文件的路径。 |
SplitRecordFile | 无 | 将录制拆分到新文件。 |
CreateRecordChapter | ChapterName="" | 添加章节标记(OBS 30.2.0+,Hybrid MP4)。 |
GetOutputList | 无 | 列出所有输出。 |
GetOutputStatus | OutputName | 获取某个输出的状态。 |
GetOutputSettings | OutputName | 获取某个输出的设置。 |
SetOutputSettingsFromString | OutputName, JsonSettings | 从 JSON 设置输出设置。 |
StartOutput / StopOutput / ToggleOutput | OutputName | 控制指定输出。 |
GetCachedOutputs | → TArray<FOBSOutput> | 已缓存的输出列表。 |
SendStreamCaption | CaptionText | 发送 CEA-608 字幕文本(推流必须处于激活状态)。 |
仅限 C++:
SetOutputSettings(JSON 对象)以及静态辅助函数BuildReplayFilename和SanitizeReplayLabel。
| 事件 | 参数 | 描述 |
|---|---|---|
OnStreamStateChanged | 状态 | 推流状态已更改。 |
OnRecordStateChanged | 状态 | 录制状态已更改。 |
OnRecordingStopped | 输出路径 | 录制已停止(含文件路径)。 |
OnVirtualCamStateChanged | 状态 | 虚拟摄像头状态已更改。 |
OnReplayBufferStateChanged | 状态 | Replay Buffer 状态已更改。 |
OnReplayBufferSaved | 保存路径 | 回放已保存(重命名后的最终路径)。 |
OnRecordFileChanged | 新路径 | 录制输出已滚动到新文件(分割)。 |
OnRecordDirectoryReceived | 目录 | 录制目录已获取。 |
OnOutputListReceived | 输出列表 | 输出列表已获取。 |
OnOutputStatusReceived | 状态 | 输出状态已获取。 |
UInhyeongOBSInputSettings
文本源/浏览器源/图像源/媒体源/色源的来源设置、默认设置,以及采集设备属性访问。通过 GetClient()->GetInputSettings() 访问。按钮按下与列表属性枚举仅在处理器上可用。
| 函数 | 参数 | 描述 |
|---|---|---|
GetInputSettings | InputName | 获取输入的设置(触发 OnInputSettingsReceivedNative)。 |
GetInputSettingsByUuid | InputUuid | 同上,按 UUID。 |
SetInputSettingsFromString | InputName, InputSettingsJson, bOverlay=true | 从 JSON 应用设置。 |
GetInputDefaultSettings | InputKind | 获取某类型的默认设置。 |
PressInputPropertiesButton | InputName, PropertyName | 按下按钮类型属性(例如采集设备的激活/停用)。 |
GetInputPropertiesListPropertyItems | InputName, PropertyName | 枚举列表属性的项目(设备下拉菜单)。触发 OnInputPropertyItemsReceived。 |
GetCachedInputSettingsString | InputName → FString | 已缓存的设置(JSON 格式)。 |
HasCachedSettings | InputName → bool | 是否已缓存设置。 |
ClearCachedSettings | InputName | 清除某输入的缓存。 |
ClearAllCachedSettings | 无 | 清除整个设置缓存。 |
SetTextSourceText | InputName, NewText | 设置文本源的文本。 |
SetBrowserSourceUrl | InputName, NewUrl | 设置浏览器源的 URL。 |
SetImageSourceFile | InputName, NewFilePath | 设置图像源的文件。 |
SetMediaSourceFile | InputName, NewFilePath, bLooping=false | 设置媒体源的文件。 |
SetColorSourceColor | InputName, Color | 设置色源的颜色(ABGR int64)。 |
仅限 C++:
SetInputSettings/SetInputSettingsByUuid(JSON 对象)以及GetCachedInputSettings(JSON 对象出参)。
| 事件 | 参数 | 描述 |
|---|---|---|
OnInputSettingsChanged | 输入详情 | 输入的设置已更改。 |
OnInputPropertyItemsReceived | 属性项目 | 列表属性的项目(设备下拉菜单)已到达。 |
仅限原生:
OnInputSettingsReceivedNative在GetInputSettings调用返回后传递实际的设置 JSON。
UInhyeongOBSMediaInputs
媒体源(VLC、Media Source)的播放控制、跳转及状态查询。通过 GetClient()->GetMediaInputs() 访问。定义了 EOBSMediaInputAction、EOBSMediaState 枚举和 FOBSMediaInputStatus 结构体。
| 函数 | 参数 | 描述 |
|---|---|---|
GetMediaInputStatus | InputName | 查询状态/时长/游标。 |
GetCachedMediaInputStatus | InputName, OutStatus → bool | 上次缓存的状态。 |
TriggerMediaInputAction | InputName, Action | 执行 EOBSMediaInputAction。 |
PlayMedia / PauseMedia / StopMedia / RestartMedia | InputName | 播放快捷操作。 |
NextMedia / PreviousMedia | InputName | 播放列表导航。 |
SetMediaInputCursor | InputName, CursorMs | 跳转到绝对位置(毫秒)。 |
OffsetMediaInputCursor | InputName, OffsetMs | 相对跳转(毫秒)。 |
SeekToPercent | InputName, Percent | 按时长比例跳转(0.0-1.0)。 |
静态辅助函数:
MediaInputActionToString、MediaInputActionFromString、ParseMediaState。
| 事件 | 参数 | 描述 |
|---|---|---|
OnMediaInputPlaybackStarted | InputName | 播放已开始。 |
OnMediaInputPlaybackEnded | InputName | 播放已结束。 |
OnMediaInputActionTriggered | InputName, Action | 媒体动作已触发。 |
OnMediaInputStatusReceived | Status | 媒体状态已到达。 |
UInhyeongOBSStudioMode
Studio Mode 切换、预览场景,以及包含手动 T-Bar 拖拽预览的转场控制。通过 GetClient()->GetStudioMode() 访问。SetTBarPosition 仅在处理器上可用。
| 函数 | 参数 | 描述 |
|---|---|---|
GetStudioModeEnabled | 无 | 查询 Studio Mode 状态。 |
SetStudioModeEnabled | bEnabled | 启用/禁用 Studio Mode。 |
IsStudioModeEnabled | → bool | 已缓存的 Studio Mode 标志。 |
GetCurrentPreviewScene | 无 | 查询预览场景。 |
SetCurrentPreviewScene | SceneName | 按名称设置预览场景。 |
SetCurrentPreviewSceneByUuid | SceneUuid | 按 UUID 设置预览场景。 |
GetPreviewSceneName | → FString | 已缓存的预览场景名称。 |
GetPreviewSceneUuid | → FString | 已缓存的预览场景 UUID。 |
TriggerStudioModeTransition | 无 | 将预览场景切换到直播画面。 |
TriggerStudioModeTransitionWithOptions | TransitionName, TransitionDurationMs=-1 | 使用指定转场/时长进行切换。 |
SetTBarPosition | Position, bRelease=true | 拖拽预览 T-Bar(0=预览,1=已切换)。传入 bRelease=false 可保持不释放,例如在 Sequencer 浮点轨道上使用。 |
| 事件 | 参数 | 描述 |
|---|---|---|
OnStudioModeStateChanged | bEnabled | Studio Mode 已切换。 |
OnCurrentPreviewSceneChanged | 场景 | 预览场景已更改。 |
UInhyeongOBSTransitions
当前转场、其时长和设置,以及实时转场进度。通过 GetClient()->GetTransitions() 访问。
| 函数 | 参数 | 描述 |
|---|---|---|
GetSceneTransitionList | 无 | 列出可用的转场(触发 OnTransitionListUpdated)。 |
GetCachedTransitions | → TArray<FOBSTransition> | 已缓存的转场列表。 |
GetCurrentSceneTransition | 无 | 查询当前转场。 |
SetCurrentSceneTransition | TransitionName | 设置当前转场。 |
GetCurrentTransitionInfo | → FOBSCurrentTransitionInfo | 已缓存的当前转场信息。 |
GetCurrentTransitionName | → FString | 已缓存的当前转场名称。 |
SetCurrentSceneTransitionDuration | DurationMs | 设置转场时长。 |
GetCurrentTransitionDuration | → int32 | 已缓存的转场时长(毫秒)。 |
SetCurrentSceneTransitionSettingsFromString | SettingsJson, bOverlay=true | 从 JSON 设置转场特定参数。 |
GetCurrentSceneTransitionCursor | 无 | 查询当前激活转场的游标。 |
GetCachedTransitionCursor | → float | 上次游标值(0.0-1.0,或 -1)。 |
IsTransitionActive | → bool | 是否有转场正在进行中。 |
仅限 C++:
SetCurrentSceneTransitionSettings(JSON 对象)。
| 事件 | 参数 | 描述 |
|---|---|---|
OnCurrentTransitionChanged | 名称 | 当前转场已更改。 |
OnTransitionDurationChanged | 时长 | 转场时长已更改。 |
OnTransitionStarted | 名称 | 转场已开始。 |
OnTransitionEnded | 名称 | 转场已结束(切换点)。 |
OnTransitionVideoEnded | 名称 | 转场的视频已结束(Stinger 转场)。 |
OnTransitionListUpdated | 列表 | 转场列表已更改。 |
UInhyeongOBSFilters
来源滤镜的增删改查、启用/重排,以及对输入、场景和分组上各滤镜的逐项设置。通过 GetClient()->GetFilters() 访问。
| 函数 | 参数 | 描述 |
|---|---|---|
GetSourceFilterKindList | 无 | 列出可用的滤镜类型。 |
GetCachedFilterKinds | → TArray<FString> | 已缓存的滤镜类型。 |
GetSourceFilterList | SourceName | 列出某来源的所有滤镜。 |
GetSourceFilterListByUuid | SourceUuid | 同上,按 UUID。 |
GetCachedFiltersForSource | SourceName → TArray<FOBSSourceFilter> | 某来源的已缓存滤镜。 |
HasCachedFiltersForSource | SourceName → bool | 滤镜是否已缓存。 |
ClearCachedFiltersForSource | SourceName | 清除某来源的滤镜缓存。 |
ClearAllCachedFilters | 无 | 清除整个滤镜缓存。 |
GetSourceFilter | SourceName, FilterName | 获取单个滤镜的信息。 |
GetSourceFilterDefaultSettings | FilterKind | 获取某滤镜类型的默认设置。 |
CreateSourceFilterFromString | SourceName, FilterName, FilterKind, FilterSettingsJson="" | 创建滤镜(JSON 设置)。 |
RemoveSourceFilter | SourceName, FilterName | 删除滤镜。 |
SetSourceFilterName | SourceName, FilterName, NewFilterName | 重命名滤镜。 |
SetSourceFilterIndex | SourceName, FilterName, FilterIndex | 在链中重新排列滤镜顺序。 |
SetSourceFilterEnabled | SourceName, FilterName, bEnabled | 启用/禁用滤镜。 |
SetSourceFilterSettingsFromString | SourceName, FilterName, FilterSettingsJson, bOverlay=true | 从 JSON 设置滤镜参数。 |
仅限 C++:
CreateSourceFilter和SetSourceFilterSettings(JSON 对象)。
| 事件 | 参数 | 描述 |
|---|---|---|
OnSourceFilterCreated | 滤镜详情 | 滤镜已创建。 |
OnSourceFilterRemoved | 滤镜详情 | 滤镜已删除。 |
OnSourceFilterNameChanged | 重命名详情 | 滤镜已重命名。 |
OnSourceFilterSettingsChanged | 滤镜详情 | 滤镜的设置已更改。 |
OnSourceFilterEnableStateChanged | 启用详情 | 滤镜的启用状态已更改。 |
OnSourceFilterListReindexed | SourceName | 来源的滤镜列表已重新排序。 |
仅限原生:
OnSourceFilterListReceivedNative在GetSourceFilterList响应缓存后触发(供编辑器组合框刷新使用)。
UInhyeongOBSScreenshots
将截图捕获为 base64 或保存到 OBS 机器的文件系统,以及纹理转换工具。通过 GetClient()->GetScreenshots() 访问。此处理器没有 OBS 事件,为纯请求/响应模式。其 On* 委托仅在处理器层级,不镜像到 Subsystem。
| 函数 | 参数 | 描述 |
|---|---|---|
GetSourceScreenshot | SourceName, ImageFormat="png" | 捕获为 base64(触发 OnScreenshotCaptured)。 |
GetSourceScreenshotByUuid | SourceUuid, ImageFormat="png" | 同上,按 UUID。 |
GetSourceScreenshotWithOptions | Request | 使用完整的 FOBSScreenshotRequest 进行捕获。 |
GetSourceScreenshotScaled | SourceName, ImageFormat, Width, Height, CompressionQuality=-1 | 捕获缩放后的截图。 |
SaveSourceScreenshot | SourceName, FilePath, ImageFormat="png" | 保存到 OBS 机器上的文件(触发 OnScreenshotSaved)。 |
SaveSourceScreenshotByUuid | SourceUuid, FilePath, ImageFormat="png" | 同上,按 UUID。 |
SaveSourceScreenshotWithOptions | Request | 完全控制地保存(需设置 Request.ImageFilePath)。 |
SaveSourceScreenshotScaled | SourceName, FilePath, ImageFormat, Width, Height, CompressionQuality=-1 | 保存缩放后的截图。 |
CreateTextureFromBase64 | Base64ImageData → UTexture2D* | (静态)将 base64 解码为纹理。 |
CreateTextureFromScreenshotResult | Result → UTexture2D* | (静态)从 FOBSScreenshotResult 生成纹理。 |
DecodeBase64ImageData | Base64ImageData, OutBytes, OutFormat → bool | (静态)将 base64 解码为原始字节。 |
CreateTextureFromBytes | ImageBytes → UTexture2D* | (静态)从原始字节生成纹理。 |
GetLastScreenshotResult | → FOBSScreenshotResult | 上次捕获的结果。 |
GetLastSavedResult | → FOBSScreenshotSavedResult | 上次保存的结果。 |
IsCapturePending | → bool | 是否有捕获正在进行中。 |
| 事件 | 参数 | 描述 |
|---|---|---|
OnScreenshotCaptured | 结果 | Base64 截图已就绪。 |
OnScreenshotSaved | 结果 | 截图已保存到文件系统。 |
UInhyeongOBSConfig
场景集合、配置文件、配置文件参数、推流服务设置、视频设置,以及插件自有的持久化键值存储。通过 GetClient()->GetConfig() 访问。持久化数据方法仅在处理器上可用。
| 函数 | 参数 | 描述 |
|---|---|---|
GetSceneCollectionList | 无 | 列出场景集合(触发 OnSceneCollectionListChanged)。 |
SetCurrentSceneCollection | SceneCollectionName | 切换场景集合(会导致重载暂停)。 |
CreateSceneCollection | SceneCollectionName | 创建并切换到新的场景集合。 |
GetCachedSceneCollections | → TArray<FString> | 已缓存的场景集合名称。 |
GetCurrentSceneCollectionName | → FString | 已缓存的当前场景集合。 |
GetProfileList | 无 | 列出配置文件(触发 OnProfileListChanged)。 |
SetCurrentProfile | ProfileName | 切换配置文件。 |
CreateProfile | ProfileName | 创建并切换到配置文件。 |
RemoveProfile | ProfileName | 删除配置文件(不能删除当前激活的)。 |
GetCachedProfiles | → TArray<FString> | 已缓存的配置文件名称。 |
GetCurrentProfileName | → FString | 已缓存的当前配置文件。 |
GetProfileParameter | ParameterCategory, ParameterName | 读取配置文件配置参数。 |
SetProfileParameter | ParameterCategory, ParameterName, ParameterValue | 写入配置文件配置参数。 |
GetStreamServiceSettings | 无 | 获取推流服务设置(触发 OnStreamServiceSettingsReceived)。 |
SetStreamServiceSettings | Settings | 设置推流服务设置(FOBSStreamServiceSettings)。 |
SetStreamServiceSettingsFromString | ServiceType, JsonSettings | 从 JSON 设置推流服务设置。 |
SetSimpleRTMPSettings | Server, StreamKey | 快速设置自定义 RTMP 推流。 |
GetCachedStreamServiceSettings | → FOBSStreamServiceSettings | 已缓存的推流服务设置。 |
GetVideoSettings | 无 | 获取视频设置(触发 OnVideoSettingsReceived)。 |
SetVideoSettings | Settings | 设置视频设置(推流/录制时不可设置)。 |
SetBaseResolution | Width, Height | 设置画布分辨率。 |
SetOutputResolution | Width, Height | 设置缩放后的输出分辨率。 |
SetFPS | FpsNumerator, FpsDenominator=1 | 以分数形式设置帧率。 |
GetCachedVideoSettings | → FOBSVideoSettings | 已缓存的视频设置。 |
GetPersistentData | Realm, SlotName | 读取持久化槽位(触发 OnPersistentDataReceived)。 |
SetPersistentData | Realm, SlotName, SlotValueJson → bool | 从 JSON 值写入槽位(空值=null)。无效 JSON 返回 false 且不发送任何内容。 |
SetPersistentDataString | Realm, SlotName, SlotValue | 以纯字符串写入槽位。 |
GetCachedPersistentData | Realm, SlotName, OutSlotValueJson → bool | 读取已缓存的槽位。 |
Realm为EOBSDataRealm(Global或Profile)。仅限 C++:SetStreamServiceSettingsRaw(JSON 对象)。
| 事件 | 参数 | 描述 |
|---|---|---|
OnStreamServiceSettingsReceived | 设置 | 推流服务设置已获取。 |
OnVideoSettingsReceived | 设置 | 视频设置已获取。 |
OnPersistentDataReceived | 槽位值 | 持久化槽位已获取。 |
OnCurrentSceneCollectionChanging | 名称 | 场景集合即将切换。 |
OnCurrentSceneCollectionChanged | 名称 | 场景集合已切换。 |
OnSceneCollectionListChanged | 列表 | 场景集合列表已更改。 |
OnCurrentProfileChanging | 名称 | 配置文件即将切换。 |
OnCurrentProfileChanged | 名称 | 配置文件已切换。 |
OnProfileListChanged | 列表 | 配置文件列表已更改。 |
UInhyeongOBSGeneral
跨域操作:性能统计、热键、vendor(第三方插件)请求、自定义/退出事件,以及出站游戏事件发送。通过 GetClient()->GetGeneral() 访问。(OBS 版本由客户端通过 GetOBSVersion / IsOBSVersionAtLeast 直接获取。)EmitGameEvent 已在 Subsystem 上转发,其余方法仅限处理器。
| 函数 | 参数 | 描述 |
|---|---|---|
GetStats | 无 | 请求性能统计(触发 OnStatsReceived)。 |
GetCachedStats | → FOBSStats | 最近一次的统计数据。 |
GetHotkeyList | 无 | 请求所有热键名称(触发 OnHotkeyListReceived)。 |
GetCachedHotkeys | → TArray<FString> | 已缓存的热键名称。 |
TriggerHotkeyByName | HotkeyName, ContextName="" | 按名称触发热键。 |
TriggerHotkeyByKeySequence | KeyId, bShift=false, bControl=false, bAlt=false, bCommand=false | 通过按键 ID 加修饰键触发热键。 |
BroadcastCustomEvent | EventDataJson | 向其他 WebSocket 客户端广播自定义事件。 |
CallVendorRequest | VendorName, RequestType, RequestDataJson | 调用第三方插件请求(触发 OnVendorResponseReceived)。 |
EmitGameEvent | EventName, PayloadJson, Realm="inhyeongobs" → bool | 发送命名空间游戏事件(载荷 JSON 无效时返回 false)。 |
EmitGameEventMap | EventName, Payload (TMap), Realm="inhyeongobs" | 基于 Map 的 EmitGameEvent 便捷方法。 |
| 事件 | 参数 | 描述 |
|---|---|---|
OnStatsReceived | 统计数据 | 性能统计已到达。 |
OnHotkeyListReceived | 热键列表 | 热键列表已到达。 |
OnExitStarted | 无 | OBS 正在关闭。 |
OnVendorEvent | vendor 载荷 | vendor(插件)事件已到达。 |
OnCustomEvent | 自定义载荷 | 来自其他客户端的自定义事件已到达。 |
OnVendorResponseReceived | vendor 响应 | CallVendorRequest 的回复已到达。 |
另请参阅
- Subsystem API:GameInstance 外观接口,提供约 100 个包装上述处理器的便捷方法。
- 事件:完整的事件目录、载荷结构体及委托签名。