Skip to content

Desuq Cafe

文档菜单

此翻译可能落后于最新的英文版本。 查看英文版

输入与媒体

输入是 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_sourceVLC 视频
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_v3SetTextSourceText()text
text_ft2_source_v2SetTextSourceText()text
browser_sourceSetBrowserSourceUrl()url
image_sourceSetImageSourceFile()file
ffmpeg_sourceSetMediaSourceFile()local_file, looping
color_source_v3SetColorSourceColor()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"));

另请参阅