Skip to content

Desuq Cafe

文档菜单

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

录制与推流

本指南涵盖所有 OBS 输出:录制(包括分割文件与章节标记)、推流、虚拟摄像头、Replay Buffer(含文件名冲突防护),以及通用输出控制和推流字幕。

录制

函数说明
StartRecord()开始录制
StopRecord()停止录制
PauseRecord()暂停录制
ResumeRecord()恢复录制
ToggleRecord()切换录制状态
ToggleRecordPause()切换录制暂停状态
GetRecordStatus()获取当前录制状态
IsRecording()检查当前是否正在录制

录制目录

函数说明
GetRecordDirectory()获取当前录制目录(异步)
SetRecordDirectory(Directory)设置录制目录(下次录制时生效)
GetCachedRecordDirectory()获取已缓存的目录值

注意:SetRecordDirectory 的更改在下一次录制开始时才会生效,不会立即应用。

录制分割与章节标记(OBS 30.2+ / obs-websocket 5.5.0+)

函数说明
SplitRecordFile()将当前录制分割到新文件
CreateRecordChapter(ChapterName)向录制添加章节标记(名称可选)

要求:

  • OBS 30.2.0 或更高版本
  • obs-websocket 5.5.0 或更高版本
  • 必须正在进行录制
  • 章节标记仅适用于 Hybrid MP4 录制格式

推流

函数说明
StartStream()开始推流
StopStream()停止推流
ToggleStream()切换推流状态
GetStreamStatus()获取当前推流状态
IsStreaming()检查当前是否正在推流

虚拟摄像头

函数说明
StartVirtualCam()启动虚拟摄像头
StopVirtualCam()停止虚拟摄像头
ToggleVirtualCam()切换虚拟摄像头
GetVirtualCamStatus()获取当前虚拟摄像头状态
IsVirtualCamActive()检查是否处于活动状态

Replay Buffer

函数说明
StartReplayBuffer()启动 Replay Buffer
StopReplayBuffer()停止 Replay Buffer
ToggleReplayBuffer()切换 Replay Buffer 状态
SaveReplayBuffer()将当前缓存保存到文件
GetReplayBufferStatus()获取当前 Replay Buffer 状态
IsReplayBufferActive()检查是否处于活动状态
GetLastReplayPath()获取上次保存的回放文件路径

**注意:**请先在 OBS 设置 → 输出 → Replay Buffer 中启用 Replay Buffer!

文件名冲突防护(需手动启用)

OBS 以时间戳命名回放文件,因此快速连续保存可能导致文件互相覆盖。输出处理器可自动重命名每个已保存的文件,并为其附加引擎内的标签。这些功能位于 GetClient()->GetOutputs() 下:

函数说明
SetReplayCollisionProofing(bEnable)为每个已保存的回放追加毫秒级精确后缀,确保文件不会发生冲突
SetNextReplayContextLabel(Label)下一次保存附加经过净化处理的标签(例如 "BossKill"),并嵌入文件名中
SaveReplayBufferWithContext(Label)立即保存缓存,并使用一次性上下文标签

GetLastReplayPath() 返回最终(重命名后)的路径。若 OBS 在不同的机器上写入文件,则跳过重命名并保留原始路径。

通用输出控制

按名称控制任意 OBS 输出,包括自定义输出和插件输出。

函数说明
GetOutputList()获取所有可用输出(异步)
GetOutputStatus(OutputName)获取指定输出的状态
GetOutputSettings(OutputName)获取输出的设置
SetOutputSettings(OutputName, Settings)设置输出设置(C++ 版本)
SetOutputSettingsFromString(OutputName, JsonSettings)设置输出设置(Blueprint 友好版本)
StartOutput(OutputName)启动指定输出
StopOutput(OutputName)停止指定输出
ToggleOutput(OutputName)切换输出的开关状态
GetCachedOutputs()获取已缓存的输出列表

**注意:**输出名称为 OBS 内部名称,可能与显示名称不同。请使用 GetOutputList() 发现可用的输出。

推流字幕

函数说明
SendStreamCaption(CaptionText)通过推流发送 CEA-608 字幕文本

要求:

  • 推流必须处于活动状态
  • 以 CEA-608 格式发送隐藏式字幕

输出事件

  • OnStreamStateChanged(bActive, State):推流状态发生变化时触发。
  • OnRecordStateChanged(bActive, State):录制状态发生变化时触发。
  • OnVirtualCamStateChanged(bActive, State):虚拟摄像头状态发生变化时触发。
  • OnReplayBufferStateChanged(bActive, State):Replay Buffer 状态发生变化时触发。
  • OnReplayBufferSaved(FilePath):回放保存到文件时触发。
  • OnRecordFileChanged(NewOutputPath):录制分割后开始写入新文件时触发。
  • OnRecordDirectoryReceived(RecordDirectory):录制目录获取完成时触发。
  • OnOutputListReceived(Outputs):输出列表获取完成时触发。
  • OnOutputStatusReceived(Status):某个输出的状态获取完成时触发。

如需查看所有 OBS 领域事件的完整目录,请参阅事件参考