输入与媒体
输入是 OBS 的来源(浏览器源、文本源、媒体源、采集设备等)。本指南涵盖创建和管理输入、控制媒体播放、编辑输入设置,以及使用硬件采集设备属性。
输入管理(CRUD)
| 函数 | 描述 |
|---|
CreateInput(Scene, Name, Kind, Settings, Enabled) | 创建新输入并添加到场景 |
CreateInputFromString(Scene, Name, Kind, JsonSettings, Enabled) | Blueprint 友好版本 |
RemoveInput(Name) | 移除输入(必须未被任何场景引用!) |
SetInputName(Name, NewName) | 重命名输入 |
GetInputKindList(bUnversioned) | 获取可用输入类型(来源类型) |
GetCachedInputKinds() | 获取本地缓存的输入类型 |
常见输入类型
| 类型 | 描述 |
|---|
browser_source | 网页浏览器 |
text_gdiplus_v3 | 文本(GDI+,Windows) |
text_ft2_source_v2 | 文本(FreeType2) |
ffmpeg_source | 媒体源 |
image_source | 图像 |
color_source_v3 | 纯色 |
vlc_source | VLC 视频 |
window_capture | 窗口采集 |
game_capture | 游戏采集 |
dshow_input | 视频采集设备 |
wasapi_input_capture | 音频输入 |
wasapi_output_capture | 音频输出采集 |
注意事项:
CreateInput 会原子性地创建输入并将其添加到指定场景。
- 如果输入仍被任何场景引用,
RemoveInput 将会失败。请先移除所有场景项目。
- 输入名称在 OBS 中必须全局唯一。
- 使用
GetInputKindList(true) 可获取无版本号的名称(更简洁,推荐使用)。
媒体播放
| 函数 | 描述 |
|---|
PlayMedia(Name) | 开始播放 |
PauseMedia(Name) | 暂停播放 |
StopMedia(Name) | 停止播放 |
RestartMedia(Name) | 从头重新播放 |
NextMedia(Name) | 跳转到播放列表中的下一项 |
PreviousMedia(Name) | 跳转到播放列表中的上一项 |
SetMediaInputCursor(Name, Ms) | 跳转到指定毫秒位置 |
OffsetMediaInputCursor(Name, OffsetMs) | 相对于当前位置进行跳转 |
SeekToPercent(Name, Percent) | 跳转到时长的指定百分比(0.0 到 1.0) |
GetMediaInputStatus(Name) | 获取媒体状态(状态、时长、游标) |
GetCachedMediaInputStatus(Name) | 获取本地缓存的媒体状态 |
媒体事件
OnMediaInputPlaybackStarted(InputName):媒体开始播放
OnMediaInputPlaybackEnded(InputName):媒体播放结束
OnMediaInputActionTriggered(InputName, Action):媒体动作被触发
OnMediaInputStatusReceived(Status):媒体状态已获取
输入设置
| 函数 | 描述 |
|---|
GetInputSettings(Name) | 获取输入的当前设置(异步) |
GetInputSettingsByUuid(Uuid) | 通过输入 UUID 获取设置 |
SetInputSettings(Name, Settings, Overlay) | 设置输入设置(JSON 对象) |
SetInputSettingsFromString(Name, JsonStr, Overlay) | 设置输入设置(JSON 字符串) |
GetInputDefaultSettings(Kind) | 获取输入类型的默认设置 |
SetTextSourceText(Name, Text) | 设置文本源的文本内容 |
SetBrowserSourceUrl(Name, Url) | 设置浏览器源的 URL |
SetImageSourceFile(Name, Path) | 设置图像源的文件路径 |
SetMediaSourceFile(Name, Path, Loop) | 设置媒体源的文件路径 |
SetColorSourceColor(Name, Color) | 设置颜色(ABGR int64 格式) |
GetCachedInputSettings(Name) | 获取本地缓存的设置(JSON 对象) |
GetCachedInputSettingsString(Name) | 获取本地缓存的设置(JSON 字符串) |
HasCachedSettings(Name) | 检查输入的设置是否已缓存 |
支持的输入类型
| 输入类型 | 便捷方法 | 设置键 |
|---|
text_gdiplus_v3 | SetTextSourceText() | text |
text_ft2_source_v2 | SetTextSourceText() | text |
browser_source | SetBrowserSourceUrl() | url |
image_source | SetImageSourceFile() | file |
ffmpeg_source | SetMediaSourceFile() | local_file, looping |
color_source_v3 | SetColorSourceColor() | color (ABGR) |
注意: 使用 bOverlay=true(默认值)可与现有设置合并,使用 false 则会替换全部设置。
设备属性(采集设备)
对于由硬件驱动的输入(采集卡、网络摄像头、音频设备),InputSettings 处理器可以枚举设备列表属性的选项,并”按下”属性按钮。这些功能通过 GetClient()->GetInputSettings() 访问:
| 函数 | 描述 |
|---|
GetInputPropertiesListPropertyItems(Input, Property) | 枚举列表属性的项目(例如 video_device_id)。异步:触发 OnInputPropertyItemsReceived 并携带 FOBSPropertyItem 列表 |
PressInputPropertiesButton(Input, Property) | ”按下”属性按钮(例如激活/刷新按钮),便于恢复卡顿的采集设备 |
适用于在引擎内构建设备选择器,或重新激活已断开的采集设备。
// Enumerate the available cameras for a video capture device input.
Subsystem->GetClient()->GetInputSettings()
->GetInputPropertiesListPropertyItems(TEXT("Webcam"), TEXT("video_device_id"));
// Re-activate a stalled capture device.
Subsystem->GetClient()->GetInputSettings()
->PressInputPropertiesButton(TEXT("Webcam"), TEXT("activate"));
另请参阅