由于最近要用到 obs-websocket 5.x.x Protocol,发现网上并没有中文资源,虽然也不难看懂,但对我们这些小学英文就不及格的货,一边翻译一边看还是有些费事的,索性把全文都做了翻译,分享给像我一样的低智码农。
概述
obs websocket提供了一个功能丰富的RPC通信协议,可以访问obs的大部分功能集。本文档包含您应该知道的一切,以便建立连接并充分使用obs websocket的功能。
设计目标
- 将标识、事件、请求和批处理请求抽象为专用消息类型
- 使用类似术语(如Get、Set、Get[x]List、Start[x]、Toggle[x])进行请求命名的一致性
- OBS数据字段名称的一致性,如sourceName、sourceKind、sourceType、sceneName、sceneItemName
- 错误代码响应系统-整数对应错误类型,带可选注释
- 可能支持多种消息编码选项:JSON和MessagePack
- PubSub系统-允许客户端指定他们希望或不希望从OBS接收哪些事件
- RPC版本控制-客户端和服务器协商最新版本的obs websocket协议进行通信。
连接到 obs-websocket
以下是如何连接到 obs-websocket 的信息
连接步骤
应严格遵循这些步骤。未能按照指示连接到服务器可能会导致您的客户端被以未定义的方式处理。
-
向obs websocket服务器发出的初始HTTP请求。
-
Sec-WebSocketProtocol标头可用于告诉obs-WebSocket使用哪种消息编码。默认情况下,obs websocket在文本上使用JSON。可用子协议:
- obswebsocket.json-文本框架上的json
- obswebsocket.msgpack-二进制帧上的msgpack
-
-
server will immediately send an OpCode 0 Hello
-
客户端监听Hello,并用包含所有适当会话参数的OpCode 1标识进行响应。
- 如果messageData对象中有身份验证字段,则服务器需要身份验证,并且应遵循创建身份验证字符串中的步骤。
- 如果没有身份验证字段,则发送到服务器的Identify对象不需要身份验证字符串。
- 客户端确定是否支持服务器的rpcVersion,如果不支持,则在Identify中提供其最接近的支持版本。
-
服务器接收并处理客户端发送的标识。
- 如果需要身份验证,并且标识消息数据不包含身份验证字符串,或者字符串不正确,则使用WebSocketCloseCode::AuthenticationFailed关闭连接
- 如果客户端请求了服务器无法使用的rpcVersion,则使用WebSocketCloseCode::UnsupportedRpcVersion关闭连接。该系统允许服务器和客户端具有无缝的向后兼容性。
- 如果任何其他参数格式错误(无效类型等),则使用适当的关闭代码关闭连接。
-
一旦在服务器上处理了标识,服务器就会用OpCode 2 Identified响应客户端。
-
客户端将开始从obs websocket接收事件,现在可以向obs websocket发出请求。
-
在识别出客户端后的任何时候,它都可以发送OpCode 3 Reidentify消息来更新某些允许的会话参数。服务器将以与初始识别期间相同的方式进行响应。
连接说明
- 如果在使用obswebsocket.json(默认)子协议时接收到二进制帧,或者在使用obswebsocket.msgpack子协议时收到文本帧,则使用WebSocketCloseCode::MessageDecodeError关闭连接。
- obs websocket服务器监听来自未识别客户端的第一级JSON中包含请求类型字段的任何消息。如果消息匹配,则使用WebSocketCloseCode::Unsupported RpcVersion关闭连接,并记录警告。
- 如果obs websocket服务器无法识别带有messageType的消息,则使用WebSocketCloseCode::UnknownOpCode关闭连接。
在收到已识别信息之前,客户端在任何时候都不得发送除单个识别信息以外的任何消息。这样做将导致连接被WebSocketCloseCode::NotIdentified关闭。
创建身份验证字符串
obs websocket使用SHA256传输身份验证凭据。服务器首先在其Hello消息数据的身份验证字段中发送一个对象。客户端处理身份验证质询,并通过Identify消息数据中的身份验证字符串进行响应。
在本指南中,我们将使用supersecretpassword作为密码。
Hello中的身份验证对象如下(示例):
json
{
"challenge": "+IxH4CnCiqpX1rM9scsNynZzbOe4KhDeYcTNS3PDaeY=",
"salt": "lM1GncleQOaCu9lT1yeUZhFYnqhsLLP1G5lAGo3ixaI="
}
要生成身份验证字符串,请执行以下步骤:
- 将websocket密码与服务器提供的salt连接(密码+salt)
- 生成结果的SHA256二进制哈希并对其进行base64编码,称为base64秘密。
- 将base64秘密与服务器发送的质询连接起来(base64_secret+challenge)
- 生成该结果的二进制SHA256哈希值并对其进行base64编码。您现在有了身份验证字符串。
有关身份验证字符串创建的真实示例,请参阅 README中 列出的obs websocket客户端库。
消息类型(操作码)
以下消息类型是可以发送到obs websocket和从obs websocket发送的低级消息类型。
从obs websocket服务器或客户端发送的消息可能包含这些第一级字段,称为基本对象:
json
{
"op": number,
"d": object
}
-
op : 一个WebSocketOpCode操作码。 -
d : 与操作相关联的数据字段的对象。
Hello (OpCode 0)
发送方: obs websocket
接收方: Client (新连接的websocket客户端)
描述: 客户端连接后立即从服务器发送的第一条消息。如果需要身份验证,则包含身份验证信息。还包含用于版本协商的RPC版本。
Data Keys:
json
{
"obsStudioVersion": string,
"obsWebSocketVersion": string,
"rpcVersion": number,
"authentication": object(optional)
}
rpcVersion : 版本号,每次对obs websocket协议进行重大更改时,该版本号都会递增。在这种情况下,它的用途是提供服务器想要使用的当前rpc版本。
obsWebSocketVersion : 可以用作软功能级别提示。例如,新的WebSocket请求可能仅在特定的obs WebSocket版本或更高版本中可用,但rpcVersion不会增加,因为没有发生破坏性更改。请注意,我们不会对这些假设做出任何保证,您仍然应该通过 GetVersion 请求验证您想要使用的请求在obs websocket中是否可用。
示例消息: 需要身份验证
json
{
"op": 0,
"d": {
"obsStudioVersion": "30.2.2",
"obsWebSocketVersion": "5.5.2",
"rpcVersion": 1,
"authentication": {
"challenge": "+IxH4CnCiqpX1rM9scsNynZzbOe4KhDeYcTNS3PDaeY=",
"salt": "lM1GncleQOaCu9lT1yeUZhFYnqhsLLP1G5lAGo3ixaI="
}
}
}
不需要身份验证
json
{
"op": 0,
"d": {
"obsStudioVersion": "30.2.2",
"obsWebSocketVersion": "5.5.2",
"rpcVersion": 1
}
}
Identify (OpCode 1)
发送方: Client(新连接的websocket客户端)
接收方: obs websocket
说明: 如果需要身份验证,对Hello消息的响应应包含身份验证字符串,以及PubSub订阅和其他会话参数。
Data Keys:
json
{
"rpcVersion": number,
"authentication": string(optional),
"eventSubscriptions": number(optional) = (EventSubscription::All)
}
rpcVersion : 客户端希望obs websocket服务器使用的版本号。
eventSubscriptions : eventSubscriptions项目的位掩码,用于随意订阅事件和事件类别。默认情况下,所有事件类别都已订阅,但标记为高容量的事件除外。必须明确订阅高容量事件。
示例消息:
json
{
"op": 1,
"d": {
"rpcVersion": 1,
"authentication": "Dj6cLS+jrNA0HpCArRg0Z/Fc+YHdt2FQfAvgD1mip6Y=",
"eventSubscriptions": 33
}
}
Identified (OpCode 2)
发送方: obs websocket
接收方: Client (新连接的websocket客户端)
说明: 已收到并验证了标识请求,连接现在已准备好正常运行。
Data Keys:
json
{
"negotiatedRpcVersion": number
}
如果rpc版本协商成功,服务器将确定要使用的rpc版本,并将其作为 negotiatedRpcVersion 提供给客户端
示例消息:
json
{
"op": 2,
"d": {
"negotiatedRpcVersion": 1
}
}
Reidentify (OpCode 3)
发送方: 已识别的客户
接收方: obs websocket
说明: 在初始识别后随时发送,以更新提供的会话参数。
Data Keys:
json
{
"eventSubscriptions": number(optional) = (EventSubscription::All)
}
初始识别后,只能更改列出的参数。要更改未列出的参数,您必须重新连接到obs websocket服务器。
Event (OpCode 5)
发送方: obs websocket
接收方: 所有已订阅和已识别的客户
描述: 发生了来自OBS的事件。例如,场景切换,源静音。
Data Keys:
json
{
"eventType": string,
"eventIntent": number,
"eventData": object(optional)
}
eventIntent : 接收事件所需订阅的原始意图。
示例消息:
json
{
"op": 5,
"d": {
"eventType": "StudioModeStateChanged",
"eventIntent": 1,
"eventData": {
"studioModeEnabled": true
}
}
}
Request (OpCode 6)
发送方: 已识别的客户
接收方: obs websocket
描述: 客户端正在向obs websocket发出请求。例如,获取当前场景,创建源代码。
Data Keys:
json
{
"requestType": string,
"requestId": string,
"requestData": object(optional),
}
示例消息:
json
{
"op": 6,
"d": {
"requestType": "SetCurrentProgramScene",
"requestId": "f819dcf0-89cc-11eb-8f0e-382c4ac93b9c",
"requestData": {
"sceneName": "Scene 12"
}
}
}
RequestResponse (OpCode 7)
发送方: obs websocket
接收方: 发出请求的已识别客户端
说明: obs websocket正在响应来自客户端的请求。
Data Keys:
json
{
"requestType": string,
"requestId": string,
"requestStatus": object,
"responseData": object(optional)
}
requestType 和requestId只是客户端发送内容的镜像。
requestStatus 对象:
json
{
"result": bool,
"code": number,
"comment": string(optional)
}
如果请求的结果为 RequestStatus::Success,则 result 为 true。否则为 false。
code 是一个RequestStatus代码。
comment 可以由服务器在错误时提供,以提供关于请求失败原因的进一步细节。
示例消息: 成功响应
json
{
"op": 7,
"d": {
"requestType": "SetCurrentProgramScene",
"requestId": "f819dcf0-89cc-11eb-8f0e-382c4ac93b9c",
"requestStatus": {
"result": true,
"code": 100
}
}
}
失败相应
json
{
"op": 7,
"d": {
"requestType": "SetCurrentProgramScene",
"requestId": "f819dcf0-89cc-11eb-8f0e-382c4ac93b9c",
"requestStatus": {
"result": false,
"code": 608,
"comment": "Parameter: sceneName"
}
}
}
RequestBatch (OpCode 8)
发送方: 已识别的客户
接收方: obs websocket
描述: 客户端正在对obs websocket发出一批请求。服务器按顺序连续处理请求。
Data Keys:
json
{
"requestId": string,
"haltOnFailure": bool(optional) = false,
"executionType": number(optional) = RequestBatchExecutionType::SerialRealtime
"requests": array<object>
}
当haltOnFailure 为 true时,请求的处理将在第一次失败时停止。仅返回 RequestBatchResponse 中已处理的请求。
Request 数组中的请求遵循与Request有效载荷数据格式相同的结构,但 requestId 是一个可选字段。
RequestBatchResponse (OpCode 9)
发送方: obs websocket
接收方: 发出请求的已识别客户端
说明: obs websocket正在响应来自客户端的请求批。
Data Keys:
json
{
"requestId": string,
"results": array<object>
}
枚举
这些是枚举声明,它们在obs websocket的协议中被引用。
Enumerations Table of Contents
WebSocketOpCode
- WebSocketOpCode::Hello(0):obs websocket向新连接的客户端发送的初始消息。
- WebSocketOpCode::Identify(1):新连接的客户端响应
Hello向obs websocket发送的消息。 - WebSocketOpCode::Identified(2):obs websocket成功识别客户端后,向客户端发送的响应。
- WebSocketOpCode::Reidentify(3):由已标识的客户端发送的更新标识参数的消息。
- WebSocketOpCode::Event(5):obs websocket发送的包含事件有效载荷的消息。
- WebSocketOpCode::Request(6):客户端向obs websocket发送的执行请求的消息。
- WebSocketOpCode::RequestResponse(7):obs websocket响应客户端的特定请求而发送的消息。
- WebSocketOpCode::RequestBatch(8):客户端发送到obs websocket以执行一批请求的消息。
- WebSocketOpCode::RequestBatchResponse(9):obs websocket响应来自客户端的特定批请求而发送的消息。
WebSocketCloseCode
- WebSocketCloseCode::DontClose(0):仅供内部使用,用于告诉请求处理程序不要执行任何关闭操作。
- WebSocketCloseCode::UnknownReason(4000):未知原因,永远不应该使用。
- WebSocketCloseCode::MessageDecodeError(4002):服务器无法解码传入的websocket消息。
- WebSocketCloseCode::MissingDataField(4003):需要一个数据字段,但有效载荷中缺少该字段。
- WebSocketCloseCode::InvalidDataFieldType(4004):数据字段的值类型无效。
- WebSocketCloseCode::InvalidDataFieldValue(4005):数据字段的值无效。
- WebSocketCloseCode::UnknownOpCode(4006):指定的操作(
op)无效或缺失。 - WebSocketCloseCode::NotIdentified(4007):客户端在没有首先发送
Identify消息的情况下发送了websocket消息。 - WebSocketCloseCode::AlreadyIdentified(4008):客户端在已识别的情况下发送了一条识别消息(
Identify)。(注意:一旦客户端被识别,只有Reidentify可用于更改会话参数。) - WebSocketCloseCode::AuthenticationFailed(4009):身份验证尝试(通过身份验证
Identify)失败。 - WebSocketCloseCode::UnsupportedRpcVersion(4010):服务器检测到使用了旧版本的obs websocket RPC协议。
- WebSocketCloseCode::SessionInvalidated(4011):websocket会话已被obs websocket服务器无效。(注意:这是UI会话列表中
Kick按钮使用的代码。如果您收到此代码,则不得自动重新连接。) - WebSocketCloseCode::UnsupportedFeature(4012):由于硬件/软件限制,请求的功能不受支持。
RequestBatchExecutionType
- RequestBatchExecutionType::None(-1):一个请求批处理,以尽可能快的速度连续处理所有请求。(注意:要引入人工延迟,请使用
Sleep请求和sleepMillis请求字段。) - RequestBatchExecutionType::SerialRealtime(0):一个请求批处理,以尽可能快的速度连续处理所有请求。(注意:要引入人工延迟,请使用
Sleep请求和sleepFrames请求字段。) - RequestBatchExecutionType::SerialFrame(1):一种请求批处理类型,与图形线程同步地串行处理所有请求。旨在为动画提供高精度。(注意:要引入人工延迟,请使用
Sleep请求和sleepFrames请求字段。) - RequestBatchExecutionType::Parallel(2):一种请求批处理类型,使用线程池中的所有可用线程处理所有请求。(注意:这主要是实验性的,只在需要大量活动处理的请求(如
GetSourceScreenshot)期间真正显示其颜色。)
RequestStatus
- RequestStatus::Unknown(0):状态未知,不应使用。
- RequestStatus::NoError(10):供内部使用,表示现场检查成功。
- RequestStatus::Success(100):请求已成功。
- RequestStatus::MissingRequestType(203):请求数据中缺少requestType字段。
- RequestStatus::UnknownRequestType(204):请求类型无效或不存在。
- RequestStatus::GenericError(205):通用错误代码。(注意:obs websocket需要提供注释。)
- RequestStatus::UnsupportedRequestBatchExecutionType(206):不支持请求批处理执行类型。
- RequestStatus::NotReady(207):服务器尚未准备好处理该请求。(注意:这通常发生在OBS场景采集更改或退出期间。如果给出此代码,则可以在延迟后再次尝试请求。)
- RequestStatus::MissingRequestField(300):缺少必需的请求字段。
- RequestStatus::MissingRequestData(301):请求没有有效的requestData对象。
- RequestStatus::InvalidRequestField(400):通用无效请求字段消息。(注意:obs websocket需要提供注释。)
- RequestStatus::InvalidRequestFieldType(401):请求字段的数据类型错误。
- RequestStatus::RequestFieldOutOfRange(402):请求字段(编号)超出了允许的范围。
- RequestStatus::RequestFieldEmpty(403):请求字段(字符串或数组)为空,不能为。
- RequestStatus::TooManyRequestFields(404):请求字段太多(例如,一个请求有两个选项,一次只允许一个)。
- RequestStatus::OutputRunning(500):输出正在运行,无法执行请求。
- RequestStatus::OutputNotRunning(501):输出未运行,应该正在运行。
- RequestStatus::OutputPaused(502):输出已暂停,不应暂停。
- RequestStatus::OutputNotPaused(503):输出不会暂停,应该暂停。
- RequestStatus::OutputDisabled(504):输出已禁用,不应禁用。
- RequestStatus::StudioModeActive(505):Studio模式处于活动状态,无法启用。
- RequestStatus::StudioModeNotActive(506):Studio模式未处于活动状态,应该处于活动状态。
- RequestStatus::ResourceNotFound(600):找不到资源。(注意:资源是obs websocket中的任何类型的对象,如输入、配置文件、输出等。)
- RequestStatus::ResourceAlreadyExists(601):资源已存在。
- RequestStatus::InvalidResourceType(602):找到的资源类型无效。
- RequestStatus::NotEnoughResources(603):没有足够的资源实例来执行请求。
- RequestStatus::InvalidResourceState(604):资源的状态无效。例如,如果资源被阻止访问。
- RequestStatus::InvalidInputKind(605):指定的输入(obs_source_t-OBS_SOURCE_TYPE_INPUT)的类型错误。
- RequestStatus::ResourceNotConfigurable(606):资源不支持配置,这与过渡特别相关,过渡并不总是具有可变设置。
- RequestStatus::InvalidFilterKind(607):指定的过滤器(obs_source_t-OBS_SOURCE_TYPE_FILTER)的类型错误。
- RequestStatus::ResourceCreationFailed(700):创建资源失败。
- RequestStatus::ResourceActionFailed(701):对资源执行操作失败。
- RequestStatus::RequestProcessingFailed(702):处理请求意外失败。(注意:obs websocket需要提供注释。)
- RequestStatus::CannotAct(703):请求字段的组合不能用于执行操作。
EventSubscription
- EventSubscription::None(0):用于禁用所有事件的订阅值。
- EventSubscription::General(
1 << 0):用于接收General类别中事件的订阅值。 - EventSubscription::Config(
1 << 1):用于接收Config类别中事件的订阅值。 - EventSubscription::Scenes(
1 << 2):订阅值以接收Scenes类别中的事件。 - EventSubscription::Inputs
(1 << 3):订阅值,用于接收Inputs类别中的事件。 - EventSubscription::Transitions
(1 << 4):订阅值以接收Transitions类别中的事件。 - EventSubscription::Filters
(1 << 5):用于接收Filters类别中事件的订阅值。 - EventSubscription::Outputs
(1 << 6):用于接收Outputs类别中事件的订阅值。 - EventSubscription::SceneItems
(1 << 7):用于接收SceneItems类别中事件的订阅值。 - EventSubscription::MediaInputs
(1 << 8):用于接收MediaInputs类别中事件的订阅值。 - EventSubscription::Vendors
(1 << 9):接收VendorEvent事件的订阅值。 - EventSubscription::Ui
(1 << 10):用于接收Ui类别中事件的订阅值。 - EventSubscription::All
(General | Config | Scenes | Inputs | Transitions | Filters | Outputs | SceneItems | MediaInputs | Vendors | Ui):助手接收所有非高容量事件。 - EventSubscription::InputVolumeMeters
(1 << 16):用于接收InputVolumeMeters高容量事件的订阅值。 - EventSubscription::InputActiveStateChanged
(1 << 17):用于接收InputActiveStateChanged高容量事件的订阅值。 - EventSubscription::InputShowStateChanged
(1 << 18):用于接收InputShowStateChanged高容量事件的订阅值。 - EventSubscription::SceneItemTransformChanged
(1 << 19):用于接收SceneItemTransformChanged高容量事件的订阅值。
ObsMediaInputAction
- ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_NONE(
OBS_WEBSOCKET_MEDIA_INPUT_ACTION_NONE):没有任何动作。 - ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PLAY(
OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PLAY):播放媒体输入。 - ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PAUSE(
OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PAUSE):暂停媒体输入。 - ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_STOP(
OBS_WEBSOCKET_MEDIA_INPUT_ACTION_STOP):停止媒体输入。 - ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_RESTART(
OBS_WEBSOCKET_MEDIA_INPUT_ACTION_RESTART):重新启动媒体输入。 - ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_NEXT(
OBS_WEBSOCKET_MEDIA_INPUT_ACTION_NEXT):转到下一个播放列表项。 - ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PREVIOUS(
OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PREVIOUS):转到上一个播放列表项。
ObsOutputState
- ObsOutputState::OBS_WEBSOCKET_OUTPUT_UNKNOWN(
OBS_WEBSOCKET_OUTPUT_UNKNOWN):未知状态。 - ObsOutputState::OBS_WEBSOCKET_OUTPUT_STARTING(
OBS_WEBSOCKET_OUTPUT_STARTING):输出正在开始。 - ObsOutputState::OBS_WEBSOCKET_OUTPUT_STARTED(
OBS_WEBSOCKET_OUTPUT_STARTED):输入已开始。 - ObsOutputState::OBS_WEBSOCKET_OUTPUT_STOPPING(
OBS_WEBSOCKET_OUTPUT_STOPPING):输出正在停止。 - ObsOutputState::OBS_WEBSOCKET_OUTPUT_STOPPED(
OBS_WEBSOCKET_OUTPUT_STOPPED):输出已停止。 - ObsOutputState::OBS_WEBSOCKET_OUTPUT_RECONNECTING(
OBS_WEBSOCKET_OUTPUT_RECONNECTING):输出已断开,正在重新连接。 - ObsOutputState::OBS_WEBSOCKET_OUTPUT_RECONNECTED(
OBS_WEBSOCKET_OUTPUT_RECONNECTED):输出已成功重新连接。 - ObsOutputState::OBS_WEBSOCKET_OUTPUT_PAUSED(
OBS_WEBSOCKET_OUTPUT_PAUSED):输出现在已暂停。 - ObsOutputState::OBS_WEBSOCKET_OUTPUT_RESUMED(
OBS_WEBSOCKET_OUTPUT_RESUMED):输出已恢复(未暂停)。
事件
一般事件(General Events)
ExitStarted
OBS已开始关机过程。
VendorEvent
Vendor 发出了一个事件。
Vendor 是由第三方插件或脚本注册的唯一名称,允许将自定义请求和事件添加到obs websocket中。如果插件或脚本实现了Vendor请求或事件,则应随附文档。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| vendorName | String | 发出事件的供应商名称 |
| eventType | String | 供应商提供的事件类型定义 |
| eventData | Object | 供应商提供的事件数据。{}如果事件不提供任何数据 |
CustomEvent
BroadcastCustomEvent发出的自定义事件。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| eventData | Object | 自定义事件数据 |
Config Events
CurrentSceneCollectionChanging
当前场景集合已开始更改。
注意:我们建议使用此事件触发所有轮询请求的暂停,因为在场景收集更改期间执行任何请求都被认为是未定义的行为,可能会导致崩溃!
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneCollectionName | String | 当前场景集合的名称 |
CurrentSceneCollectionChanged
当前场景集合已更改。
注意:如果在CurrentSceneCollectionChanging期间暂停了轮询,则可以重新启动轮询。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneCollectionName | String | 新场景集合的名称 |
SceneCollectionListChanged
场景集合列表已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneCollections | Array<String> | 更新的场景集合列表 |
CurrentProfileChanging
目前的情况已经开始发生变化。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| profileName | String | 当前配置文件的名称 |
CurrentProfileChanged
当前配置文件已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| profileName | String | 新配置文件的名称 |
ProfileListChanged
配置文件列表已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| profiles | Array<String> | 更新的配置文件列表 |
Scenes Events
SceneCreated
创建了一个新场景。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneName | String | 新场景的名称 |
| sceneUuid | String | 新场景的UUID |
| isGroup | Boolean | 新场景是否为群组 |
SceneRemoved
一个场景已被删除。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneName | String | 已删除的名称 |
| sceneUuid | String | 已删除的UUID |
| isGroup | Boolean | 已删除是否为群组 |
SceneNameChanged
场景的名称已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneUuid | String | 场景的UUID |
| oldSceneName | String | 场景的旧名称 |
| sceneName | String | 场景的新名称 |
CurrentProgramSceneChanged
当前节目场景已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneName | String | 切换到的场景的名称 |
| sceneUuid | String | 切换到的场景的UUID |
CurrentPreviewSceneChanged
当前预览场景已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneName | String | 切换到的场景的名称 |
| sceneUuid | String | 切换到的场景的UUID |
SceneListChanged
场景列表已更改。
TODO:当场景重新排序时,让OBS启动此事件。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| scenes | Array<Object> | 更新的场景数组 |
Inputs Events
InputCreated
已创建输入。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | UUID of the input |
| inputKind | String | 输入的UUID |
| unversionedInputKind | String | 未版本化的输入类型(即无_v2内容) |
| inputKindCaps | Number | 输入支持的上限的位标志值。请参阅libobs文档中的obs_source_info.output_flags |
| inputSettings | Object | 创建输入时为其配置的设置 |
| defaultInputSettings | Object | 输入的默认设置 |
InputRemoved
输入已被删除。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | 输入的UUID |
InputNameChanged
输入的名称已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputUuid | String | 输入的UUID |
| oldInputName | String | 输入的旧名称 |
| inputName | String | 输入的新名称 |
InputSettingsChanged
输入的设置已更改(已更新)。
注意:在某些输入上,更改属性对话框中的值将导致立即更新。按下"取消"按钮将恢复设置,从而引发另一个事件。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | 输入的UUID |
| inputSettings | Object | 输入的新设置对象 |
InputActiveStateChanged
输入的活动状态已更改。
当输入处于活动状态时,这意味着它正在由程序提要显示。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | |
| videoActive | Boolean | 输入是否处于活动状态 |
InputShowStateChanged
输入的显示状态已更改。
当显示输入时,这意味着它正在通过预览或对话框显示。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | 输入的UUID |
| videoShowing | Boolean | 输入是否显示 |
InputMuteStateChanged
输入的静音状态已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | 输入的UUID |
| inputMuted | Boolean | 输入是否静音 |
InputVolumeChanged
输入的音量级别已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | 输入的UUID |
| inputVolumeMul | Number | 新的音量水平乘数 |
| inputVolumeDb | Number | 新音量级别(dB) |
InputAudioBalanceChanged
输入的音频平衡值已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | 输入的UUID |
| inputAudioBalance | Number | 输入的新音频平衡值 |
InputAudioSyncOffsetChanged
输入的同步偏移已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | 输入的UUID |
| inputAudioSyncOffset | Number | 新同步偏移量(毫秒) |
InputAudioTracksChanged
输入的音轨已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | 输入的UUID |
| inputAudioTracks | Object | 音轨对象及其相关启用状态 |
InputAudioMonitorTypeChanged
输入的监视器类型已更改。
可用类型有:
OBS_MONITORING_TYPE_NONEOBS_MONITORING_TYPE_MONITOR_ONLYOBS_MONITORING_TYPE_MONITOR_AND_OUTPUT
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | 输入的UUID |
| monitorType | String | 输入的新监视器类型 |
InputVolumeMeters
一个高容量事件,每50毫秒提供一次所有活动输入的音量级别。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputs | Array<Object> | 一系列活动输入及其相关音量水平 |
Transitions Events
CurrentSceneTransitionChanged
当前场景过渡已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| transitionName | String | 新过渡的名称 |
| transitionUuid | String | 新转换的UUID |
CurrentSceneTransitionDurationChanged
当前场景过渡持续时间已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| transitionDuration | Number | 转换持续时间(毫秒) |
SceneTransitionStarted
场景转换已开始。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| transitionName | String | 场景过渡名称 |
| transitionUuid | String | 场景转换UUID |
SceneTransitionEnded
场景转换已完全完成。
注意:当转换被用户中断时,似乎不会触发。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| transitionName | String | 场景过渡名称 |
| transitionUuid | String | 场景转换UUID |
SceneTransitionVideoEnded
场景转换的视频已完全完成。
可用于判断视频何时真正结束。SceneTransitionEnded仅表示切割点,而不是过渡播放的完成。
注意:似乎每次转换都会调用它,无论相关性如何。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| transitionName | String | 场景过渡名称 |
| transitionUuid | String | 场景转换UUID |
Filters Events
SourceFilterListReindexed
源的过滤器列表已重新索引。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sourceName | String | 来源名称 |
| filters | Array<Object> | 过滤器对象数组 |
SourceFilterCreated
已将过滤器添加到源中。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sourceName | String | 添加过滤器的源的名称 |
| filterName | String | 过滤器名称 |
| filterKind | String | 过滤器的种类 |
| filterIndex | Number | 过滤器的索引位置 |
| filterSettings | Object | 创建过滤器时为其配置的设置 |
| defaultFilterSettings | Object | 过滤器的默认设置 |
SourceFilterRemoved
已从源中删除过滤器。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sourceName | String | 过滤器所在源的名称 |
| filterName | String | 过滤器名称 |
SourceFilterNameChanged
源过滤器的名称已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sourceName | String | 过滤器打开的源 |
| oldFilterName | String | 过滤器的旧名称 |
| filterName | String | 过滤器的新名称 |
SourceFilterSettingsChanged
源过滤器的设置已更改(已更新)。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sourceName | String | 过滤器所在源的名称 |
| filterName | String | 过滤器名称 |
| filterSettings | Object | 过滤器的新设置对象 |
SourceFilterEnableStateChanged
源过滤器的启用状态已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sourceName | String | 过滤器所在源的名称 |
| filterName | String | 过滤器名称 |
| filterEnabled | Boolean | 过滤器是否启用 |
Scene Items Events
SceneItemCreated
已创建场景项。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneName | String | 添加项目的场景名称 |
| sceneUuid | String | 添加项目的场景的UUID |
| sourceName | String | 基础源的名称(输入/场景) |
| sourceUuid | String | 底层源(输入/场景)的UUID |
| sceneItemId | Number | 场景项的数字ID |
| sceneItemIndex | Number | 项目的索引位置 |
SceneItemRemoved
场景项已被删除。
当项目所在的场景被移除时,不会触发此事件。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneName | String | 从中删除项目的场景名称 |
| sceneUuid | String | 从中删除项目的场景的UUID |
| sourceName | String | 基础源的名称(输入/场景) |
| sourceUuid | String | 底层源(输入/场景)的UUID |
| sceneItemId | Number | 场景项的数字ID |
SceneItemListReindexed
场景的项目列表已重新索引。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneName | String | 场景名称 |
| sceneUuid | String | 场景的UUID |
| sceneItems | Array<Object> | 场景项对象数组 |
SceneItemEnableStateChanged
场景项的启用状态已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneName | String | 项目所在场景的名称 |
| sceneUuid | String | 项目所在场景的UUID |
| sceneItemId | Number | 场景项的数字ID |
| sceneItemEnabled | Boolean | 场景项是否启用(可见) |
SceneItemLockStateChanged
场景项的锁定状态已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneName | String | 项目所在场景的名称 |
| sceneUuid | String | 项目所在场景的UUID |
| sceneItemId | Number | 场景项的数字ID |
| sceneItemLocked | Boolean | 场景项是否已锁定 |
SceneItemSelected
在Ui中选择了一个场景项。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneName | String | 项目所在场景的名称 |
| sceneUuid | String | 项目所在场景的UUID |
| sceneItemId | Number | 场景项的数字ID |
SceneItemTransformChanged
场景项的变换/裁剪已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneName | String | 项目所在场景的名称 |
| sceneUuid | String | 项目所在场景的UUID |
| sceneItemId | Number | 场景项的数字ID |
| sceneItemTransform | Object | 场景项的新变换/裁剪信息 |
Outputs Events
StreamStateChanged
流输出的状态已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 输出是否处于活动状态 |
| outputState | String | 输出的具体状态 |
RecordStateChanged
记录输出的状态已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 输出是否处于活动状态 |
| outputState | String | 输出的具体状态 |
| outputPath | String | 如果记录已停止,则保存的记录的文件名。否则为null |
RecordFileChanged
记录输出已开始写入新文件。例如,当发生文件拆分时。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| newOutputPath | String | 输出已开始写入的文件名 |
ReplayBufferStateChanged
重播缓冲区输出的状态已更改。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 输出是否处于活动状态 |
| outputState | String | 输出的具体状态 |
VirtualcamStateChanged
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 输出是否处于活动状态 |
| outputState | String | 输出的具体状态 |
ReplayBufferSaved
重播缓冲区已保存。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| savedReplayPath | String | 保存的回放文件的路径 |
Media Inputs Events
MediaInputPlaybackStarted
媒体输入已开始播放。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | 输入的UUID |
MediaInputPlaybackEnded
媒体输入已完成播放。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | 输入的UUID |
MediaInputActionTriggered
已对输入执行操作。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputName | String | 输入名称 |
| inputUuid | String | 输入的UUID |
| mediaAction | String | 对输入执行的操作。请参阅ObsMediaInputAction枚举 |
Ui Events
StudioModeStateChanged
工作室模式已启用或禁用。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| studioModeEnabled | Boolean | True == Enabled, False == Disabled |
ScreenshotSaved
屏幕截图已保存。
注意:仅针对"设置"->"热键"->"截图输出"中提供的截图功能触发。如果需要这种客户端间通信,使用Get/SaveSourceScreenshot的应用程序应实现CustomEvent。
数据字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| savedScreenshotPath | String | 保存的图像文件的路径 |
Requests
General Requests
GetVersion
获取有关当前插件和RPC版本的数据。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| obsVersion | String | 当前OBS Studio版本 |
| obsWebSocketVersion | String | 当前obs websocket版本 |
| rpcVersion | Number | 当前最新的obs websocket RPC版本 |
| availableRequests | Array<String> | 当前协商的RPC版本的可用RPC请求数组 |
| supportedImageFormats | Array<String> | GetSourceScreenshot 和 SaveSourceScreenshot 请求中提供的图像格式。 |
| platform | String | 平台的名称。通常是"windows"、"macos"或"ubuntu"(linux风格)。不保证是其中任何一个 |
| platformDescription | String | 平台的描述,如"Windows 10(10.0)" |
GetStats
获取有关OBS、OBS websocket和当前会话的统计信息。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| cpuUsage | Number | 当前CPU使用率(百分比) |
| memoryUsage | Number | OBS当前使用的内存量(MB) |
| availableDiskSpace | Number | 设备上用于记录存储的可用磁盘空间 |
| activeFps | Number | 当前正在渲染的FPS |
| averageFrameRenderTime | Number | OBS渲染帧的平均时间(毫秒) |
| renderSkippedFrames | Number | OBS在渲染线程中跳过的帧数 |
| renderTotalFrames | Number | 渲染线程输出的帧总数 |
| outputSkippedFrames | Number | 输出线程中OBS跳过的帧数 |
| outputTotalFrames | Number | 输出线程输出的总帧数 |
| webSocketSessionIncomingMessages | Number | obs websocket从客户端接收到的消息总数 |
| webSocketSessionOutgoingMessages | Number | obs websocket向客户端发送的消息总数 |
BroadcastCustomEvent
向所有WebSocket客户端广播CustomEvent。接收者是被识别和订阅的客户端。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| eventData | Object | 向所有接收器发射的数据有效载荷 | None | N/A |
CallVendorRequest
呼叫注册到供应商的请求。
供应商是由第三方插件或脚本注册的唯一名称,允许将自定义请求和事件添加到obs websocket中。如果插件或脚本实现了供应商请求或事件,则应随附文档。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| endorName | String | 要使用的供应商名称 | None | N/A |
| requestType | String | 要调用的请求类型 | None | N/A |
| ?requestData | Object | 包含适当请求数据的对象 | None | {} |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| vendorName | String | Echoed of vendorName |
| requestType | String | Echoed of requestType |
| responseData | Object | 包含适当响应数据的对象。{}如果请求未提供任何响应数据 |
GetHotkeyList
获取OBS中所有热键名称的数组。
注意:obs websocket中的热键功能按原样提供,如果出现故障,我们不保证提供支持。在9/10的热键请求使用中,有一种更好、更可靠的方法是通过其他请求。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| hotkeys | Array<String> | 热键名称数组 |
TriggerHotkeyByName
使用其名称触发热键。请参阅 GetHotkeyList。
注意:obs websocket中的热键功能按原样提供,如果出现故障,我们不保证提供支持。在9/10的热键请求使用中,有一种更好、更可靠的方法是通过其他请求。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| hotkeyName | String | 要触发的热键名称 | None | N/A |
| ?contextName | String | 要触发的热键的上下文名称 | None | Unknown |
TriggerHotkeyByKeySequence
使用一系列按键触发热键。
注意:obs websocket中的热键功能按原样提供,如果出现故障,我们不保证提供支持。在9/10的热键请求使用中,有一种更好、更可靠的方法是通过其他请求。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?keyId | String | 要使用的OBS密钥ID。See https://github.com/obsproject/obs-studio/blob/master/libobs/obs-hotkeys.h | None | Not pressed |
| ?keyModifiers | Object | 包含要应用的键修饰符的对象 | None | Ignored |
| ?keyModifiers.shift | Boolean | Press Shift | None | Not pressed |
| ?keyModifiers.control | Boolean | Press CTRL | None | Not pressed |
| ?keyModifiers.alt | Boolean | Press ALT | None | Not pressed |
| ?keyModifiers.command | Boolean | Press CMD (Mac) | None | Not pressed |
Sleep
睡眠时间或帧数。仅在类型为SERIAL_REALTIME或SERIAL_FRAME的请求批中可用。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sleepMillis | Number | 睡眠的毫秒数 (if SERIAL_REALTIME mode) |
>= 0, <= 50000 | Unknown |
| ?sleepFrames | Number | 要睡眠的帧数(if SERIAL_FRAME mode) |
>= 0, <= 10000 | Unknown |
Config Requests
GetPersistentData
从所选持久数据域获取"插槽"的值。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| realm | String | 要选择的数据领域。 OBS_WEBSOCKET_DATA_REALM_GLOBAL or OBS_WEBSOCKET_DATA_REALM_PROFILE |
None | N/A |
| slotName | String | 要从中检索数据的插槽的名称 | None | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| slotValue | Any | 与插槽关联的值。如果未设置,则为null |
SetPersistentData
设置所选持久数据域中"插槽"的值。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| realm | String | 要选择的数据领域。 OBS_WEBSOCKET_DATA_REALM_GLOBAL or OBS_WEBSOCKET_DATA_REALM_PROFILE |
None | N/A |
| slotName | String | 要从中检索数据的插槽的名称 | None | N/A |
| slotValue | Any | 应用于插槽的值 | None | N/A |
GetSceneCollectionList
获取所有场景集合的数组
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| currentSceneCollectionName | String | 当前场景集合的名称 |
| sceneCollections | Array<String> | 所有可用场景集合的数组 |
SetCurrentSceneCollection
切换到场景集合。
注意:这将一直阻塞,直到集合完成更改。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| sceneCollectionName | String | 要切换到的场景集合的名称 | None | N/A |
CreateSceneCollection
创建新的场景集合,并在此过程中切换到它。
注意:这将一直阻塞,直到集合完成更改。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| sceneCollectionName | String | 要切换到的场景集合的名称 | None | N/A |
GetProfileList
获取所有配置文件的数组
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| currentProfileName | String | 当前配置文件的名称 |
| profiles | Array<String> | 所有可用配置文件的数组 |
SetCurrentProfile
切换到配置文件。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| profileName | String | 要切换到的配置文件的名称 | None | N/A |
CreateProfile
创建新配置文件,并在此过程中切换到它。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| profileName | String | 要创建的配置文件的名称 | None | N/A |
RemoveProfile
删除配置文件。如果选择当前配置文件,它将首先更改为其他配置文件。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| profileName | String | 要删除的配置文件的名称 | None | N/A |
GetProfileParameter
从当前配置文件的配置中获取参数。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| parameterCategory | String | 要获取的参数的类别 | None | N/A |
| parameterName | String | 要获取的参数的名称 | None | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| parameterValue | String | 与参数关联的值。如果未设置,则为null,没有默认值 |
| defaultParameterValue | String | 与参数关联的默认值。如果没有默认值,则为null |
SetProfileParameter
设置当前配置文件配置中的参数值。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| parameterCategory | String | 要设置的参数类别 | None | N/A |
| parameterName | String | 要设置的参数的名称 | None | N/A |
| parameterValue | String | 要设置的参数值。使用"null"删除 | None | N/A |
GetVideoSettings
获取当前视频设置。
注意:要获得真实的FPS值,请将FPS分子除以FPS分母。示例:60000/1001
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| fpsNumerator | Number | 分数FPS值的计算器 |
| fpsDenominator | Number | 分数FPS值的分母 |
| baseWidth | Number | 基础(画布)分辨率的宽度(像素) |
| baseHeight | Number | 基础(画布)分辨率的高度(像素) |
| outputWidth | Number | 输出分辨率的宽度(像素) |
| outputHeight | Number | 输出分辨率的高度(像素) |
SetVideoSettings
设置当前视频设置。
注意:字段必须成对指定。例如,如果不指定baseHeight,则不能仅设置baseWidth。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?fpsNumerator | Number | 分数FPS值的计算器 | >= 1 | Not changed |
| ?fpsDenominator | Number | 分数FPS值的分母 | >= 1 | Not changed |
| ?baseWidth | Number | 基础(画布)分辨率的宽度(像素) | >= 1, <= 4096 | Not changed |
| ?baseHeight | Number | 基础(画布)分辨率的高度(像素) | >= 1, <= 4096 | Not changed |
| ?outputWidth | Number | 输出分辨率的宽度(像素) | >= 1, <= 4096 | Not changed |
| ?outputHeight | Number | 输出分辨率的高度(像素) | >= 1, <= 4096 | Not changed |
GetStreamServiceSettings
获取当前流服务设置(流目标)。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| streamServiceType | String | 流服务类型,如 rtmp_custom 或 rtmp_common |
| streamServiceSettings | Object | 流服务设置 |
SetStreamServiceSettings
设置当前流服务设置(流目标)。
注意:可以使用rtmp_custom类型和设置字段server和key设置简单的RTMP设置。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| streamServiceType | String | 要应用的流服务类型。示例: rtmp_common or rtmp_custom |
None | N/A |
| streamServiceSettings | Object | 应用于服务的设置 | None | N/A |
GetRecordDirectory
获取记录输出设置为的当前目录。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| recordDirectory | String | 输出目录 |
SetRecordDirectory
设置记录输出将文件写入的当前目录。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| recordDirectory | String | 输出目录 | None | N/A |
Sources Requests
GetSourceActive
获取源的活动状态和显示状态。
与输入和场景兼容。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sourceName | String | 要获取活动状态的源的名称 | None | Unknown |
| ?sourceUuid | String | 获取活动状态的源的UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| videoActive | Boolean | 源是否显示在程序中 |
| videoShowing | Boolean | 源是否显示在UI中(预览、投影仪、属性) |
GetSourceScreenshot
获取源代码的Base64编码屏幕截图。
imageWidth和imageHeight参数被视为"内部缩放",这意味着将使用最小的比率,并保持原始分辨率的纵横比。如果未指定imageWidth和imageHeight,压缩图像将使用源的全分辨率。
与输入和场景兼容。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sourceName | String | 要截图的源名称 | None | Unknown |
| ?sourceUuid | String | 要截图的源的UUID | None | Unknown |
| imageFormat | String | 要使用的图像压缩格式。使用GetVersion获取兼容的图像格式 |
None | N/A |
| ?imageWidth | Number | 将屏幕截图缩放到的宽度 | >= 8, <= 4096 | 使用源值 |
| ?imageHeight | Number | 将屏幕截图缩放到的高度 | >= 8, <= 4096 | 使用源值 |
| ?imageCompressionQuality | Number | 使用压缩质量。0表示高压缩,100表示未压缩。-1使用"默认"(不管是什么意思,idk) | >= -1, <= 100 | -1 |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| imageData | String | Base64编码截图 |
SaveSourceScreenshot
将源代码的屏幕截图保存到文件系统。
imageWidth和imageHeight参数被视为"内部缩放",这意味着将使用最小的比率,并保持原始分辨率的纵横比。如果未指定imageWidth和imageHeight,压缩图像将使用源的全分辨率。
与输入和场景兼容。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sourceName | String | 要截图的源名称 | None | Unknown |
| ?sourceUuid | String | 要截图的源的UUID | None | Unknown |
| imageFormat | String | 要使用的图像压缩格式。使用GetVersion获取兼容的图像格式 |
None | N/A |
| ?imageWidth | Number | 将屏幕截图缩放到的宽度 | >= 8, <= 4096 | 使用源值 |
| ?imageHeight | Number | 将屏幕截图缩放到的高度 | >= 8, <= 4096 | 使用源值 |
| ?imageCompressionQuality | Number | 使用压缩质量。0表示高压缩,100表示未压缩。-1使用"默认"(不管是什么意思,idk) | >= -1, <= 100 | -1 |
Scenes Requests
GetSceneList
获取OBS中所有场景的数组。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| currentProgramSceneName | String | |
| currentProgramSceneUuid | String | 当前节目场景名称。如果内部状态不同步,则可以为null |
| currentPreviewSceneName | String | 当前预览场景名称。如果不是工作室模式,则为null |
| currentPreviewSceneUuid | String | 当前预览场景UUID。如果不是工作室模式,则为null |
| scenes | Array<Object> | 一系列场景 |
GetGroupList
获取OBS中所有组的数组。
OBS中的组实际上是场景,但经过重命名和修改。在obs websocket中,我们尽可能地将它们视为场景。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| groups | Array<String> | Array of group names |
GetCurrentProgramScene
获取当前程序场景。
注意:此请求计划在即将到来的RPC版本中删除currentProgram前缀字段。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneName | String | 当前节目场景名称 |
| sceneUuid | String | 当前程序场景UUID |
| currentProgramSceneName | String | 当前程序场景名称(已弃用) |
| currentProgramSceneUuid | String | 当前程序场景UUID(已弃用) |
SetCurrentProgramScene
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 要设置为当前节目场景的场景名称 | None | Unknown |
| ?sceneUuid | String | 要设置为当前程序场景的场景UUID | None | Unknown |
GetCurrentPreviewScene
获取当前预览场景。
仅在启用工作室模式时可用。
注意:此请求计划在即将到来的RPC版本中删除currentPreview前缀字段。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneName | String | 当前节目场景名称 |
| sceneUuid | String | 当前程序场景UUID |
| currentProgramSceneName | String | 当前程序场景名称(已弃用) |
| currentProgramSceneUuid | String | 当前程序场景UUID(已弃用) |
SetCurrentPreviewScene
设置当前预览场景。
仅在启用工作室模式时可用。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 要设置为当前节目场景的场景名称 | None | Unknown |
| ?sceneUuid | String | 要设置为当前程序场景的场景UUID | None | Unknown |
CreateScene
在OBS中创建新场景。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| sceneName | String | 新场景的名称 | None | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneUuid | String | 创建场景的UUID |
RemoveScene
从OBS中删除场景。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 要删除的场景名称 | None | Unknown |
| ?sceneUuid | String | 要删除的场景的UUID | None | Unknown |
SetSceneName
设置场景的名称(重命名)。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 要修改的场景名称 | None | Unknown |
| ?sceneUuid | String | 要修改的场景的UUID | None | Unknown |
| newSceneName | String | 场景的新名称 | None | N/A |
GetSceneSceneTransitionOverride
获取场景的替代场景过渡。
注意:截至2024-1-18,转换UUID响应字段目前无法实现。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 要设置的场景名称 | None | Unknown |
| ?sceneUuid | String | 要设置的场景的UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| transitionName | String | 覆盖场景过渡的名称,否则为 null |
| transitionDuration | Number | 覆盖场景过渡的持续时间,否则为 null |
SetSceneSceneTransitionOverride
为场景设置覆盖的场景过渡。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 场景名称 | None | Unknown |
| ?sceneUuid | String | 场景UUID | None | Unknown |
| ?transitionName | String | 用作替代的场景过渡的名称。指定 null 以删除 |
None | Unchanged |
| ?transitionDuration | Number | 用于任何覆盖转换的持续时间。指定 null 以删除 |
>= 50, <= 20000 | Unchanged |
Inputs Requests
GetInputList
获取OBS中所有输入的数组。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputKind | String | 将数组限制为仅包含指定类型的输入 | None | 包括所有种类 |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputs | Array<Object> | 输入数组 |
GetInputKindList
获取OBS中所有可用输入类型的数组。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?unversioned | Boolean | True返回所有类型的未版本,False返回版本后缀(如果可用) | None | false |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputKinds | Array<String> | 输入类型数组 |
GetSpecialInputs
获取所有特殊输入的名称。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| desktop1 | String | 桌面音频输入的名称 |
| desktop2 | String | 桌面音频2输入的名称 |
| mic1 | String | 麦克风/辅助音频输入的名称 |
| mic2 | String | 麦克风/辅助音频2输入的名称 |
| mic3 | String | 麦克风/辅助音频3输入的名称 |
| mic4 | String | 麦克风/辅助音频4输入的名称 |
CreateInput
创建新输入,将其作为场景项添加到指定场景中。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 要将输入添加为场景项的场景名称 | None | Unknown |
| ?sceneUuid | String | 要将输入作为场景项添加到的场景的UUID | None | Unknown |
| inputName | String | 要创建的新输入的名称 | None | N/A |
| inputKind | String | 要创建的输入类型 | None | N/A |
| ?inputSettings | Object | 用于初始化输入的Settings对象 | None | Default settings used |
| ?sceneItemEnabled | Boolean | 是否将创建的场景项设置为启用或禁用 | None | True |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputUuid | String | 新创建的输入的UUID |
| sceneItemId | Number | 新创建的场景项的ID |
RemoveInput
删除现有输入。
注意:将立即删除所有关联的场景项。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 要删除的输入的名称 | None | Unknown |
| ?inputUuid | String | 要删除的输入的UUID | None | Unknown |
SetInputName
设置输入的名称(重命名)。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 当前输入名称 | None | Unknown |
| ?inputUuid | String | 当前输入UUID | None | Unknown |
| newInputName | String | 输入的新名称 | None | N/A |
GetInputDefaultSettings
获取输入类型的默认设置。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| inputKind | String | 输入种类以获取默认设置 | None | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| defaultInputSettings | Object | 输入类型的默认设置对象 |
GetInputSettings
获取输入的设置。
注意:不包括默认值。要创建整个设置对象,请将inputSettings覆盖在GetInputDefaultSettings提供的defaultInputSettings上。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 用于获取设置的输入名称 | None | Unknown |
| ?inputUuid | String | 用于获取设置的输入的UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputSettings | Object | 输入的设置对象 |
| inputKind | String | 输入的类型 |
SetInputSettings
设置输入的设置。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 用于设置的输入名称 | None | Unknown |
| ?inputUuid | String | 用于设置的输入的UUID | None | Unknown |
| inputSettings | Object | 要应用的设置对象 | None | N/A |
| ?overlay | Boolean | True ==在现有设置的基础上应用这些设置,False =+将输入重置为默认值,然后应用设置。 | None | true |
GetInputMute
获取输入的音频静音状态。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 用于获取静音状态的输入名称 | None | Unknown |
| ?inputUuid | String | 用于获取静音状态的输入UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputMuted | Boolean | 输入是否静音 |
SetInputMute
设置输入的音频静音状态。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 设置静音状态的输入名称 | None | Unknown |
| ?inputUuid | String | 用于设置静音状态的输入的UUID | None | Unknown |
| inputMuted | Boolean | 是否静音输入 | None | N/A |
ToggleInputMute
切换输入的音频静音状态。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 切换静音状态的输入名称 | None | Unknown |
| ?inputUuid | String | 用于切换静音状态的输入的UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputMuted | Boolean | 输入是否已静音或未静音 |
GetInputVolume
获取输入的当前音量设置。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 用于获取音量的输入名称 | None | Unknown |
| ?inputUuid | String | 输入的UUID以获取卷 | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputVolumeMul | Number | 多模式音量设置 |
| inputVolumeDb | Number | 音量设置(dB) |
SetInputVolume
设置输入的音量设置。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 设置音量的输入名称 | None | Unknown |
| ?inputUuid | String | 用于设置卷的输入的UUID | None | Unknown |
| ?inputVolumeMul | Number | 多模式音量设置 | >= 0, <= 20 | 应指定 inputVolumeDb |
| ?inputVolumeDb | Number | 音量设置(dB) | >= -100, <= 26 | 应指定 inputVolumeMul |
GetInputAudioBalance
获取输入的音频平衡。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 获取音频平衡的输入名称 | None | Unknown |
| ?inputUuid | String | 用于获取音频平衡的输入UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputAudioBalance | Number | 音频平衡值为0.0-1.0 |
SetInputAudioBalance
设置输入的音频平衡。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 用于设置音频平衡的输入名称 | None | Unknown |
| ?inputUuid | String | 用于设置音频平衡的输入UUID | None | Unknown |
| inputAudioBalance | Number | 新的音频平衡值 | >= 0.0, <= 1.0 | N/A |
GetInputAudioSyncOffset
获取输入的音频同步偏移量。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 用于获取音频同步偏移的输入名称 | None | Unknown |
| ?inputUuid | String | 用于获取音频同步偏移的输入UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputAudioSyncOffset | Number | 音频同步偏移量(毫秒) |
SetInputAudioSyncOffset
设置输入音频同步偏移
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 用于设置音频同步偏移的输入名称 | None | Unknown |
| ?inputUuid | String | 用于设置音频同步偏移的输入UUID | None | Unknown |
| inputAudioSyncOffset | Number | 新的音频同步偏移量(毫秒) | >= -950, <= 20000 | N/A |
GetInputAudioMonitorType
获取输入的音频监视器类型。
可用的音频监视器类型有:
OBS_MONITORING_TYPE_NONEOBS_MONITORING_TYPE_MONITOR_ONLYOBS_MONITORING_TYPE_MONITOR_AND_OUTPUT- Complexity Rating:
2/5 - Latest Supported RPC Version:
1 - Added in v5.0.0
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 获取音频监视器类型的输入名称 | None | Unknown |
| ?inputUuid | String | 用于获取音频监视器类型的输入的UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| monitorType | String | 音频监视器类型 |
GetInputAudioTracks
获取输入的所有音轨的启用状态。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 输入的名称 | None | Unknown |
| ?inputUuid | String | 输入的UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputAudioTracks | Object | 音轨对象和相关启用状态 |
SetInputAudioTracks
设置输入音轨的启用状态。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 输入的名称 | None | Unknown |
| ?inputUuid | String | 输入的UUID | None | Unknown |
| inputAudioTracks | Object | 要应用的轨迹设置 | None | N/A |
GetInputDeinterlaceMode
获取输入的去隔行模式。
Deinterlace Modes:
OBS_DEINTERLACE_MODE_DISABLEOBS_DEINTERLACE_MODE_DISCARDOBS_DEINTERLACE_MODE_RETROOBS_DEINTERLACE_MODE_BLENDOBS_DEINTERLACE_MODE_BLEND_2XOBS_DEINTERLACE_MODE_LINEAROBS_DEINTERLACE_MODE_LINEAR_2XOBS_DEINTERLACE_MODE_YADIFOBS_DEINTERLACE_MODE_YADIF_2X
注意:去交错功能仅限于异步输入。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 输入的名称 | None | Unknown |
| ?inputUuid | String | 输入的UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputDeinterlaceMode | Object | 输入的去交错模式 |
SetInputDeinterlaceMode
设置输入的去隔行模式。
注意:去交错功能仅限于异步输入。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 输入的名称 | None | Unknown |
| ?inputUuid | String | 输入的UUID | None | Unknown |
| inputDeinterlaceMode | String | 输入的去交错模式 | None | N/A |
GetInputDeinterlaceFieldOrder
获取输入的去隔行字段顺序。
Deinterlace Field Orders:
OBS_DEINTERLACE_FIELD_ORDER_TOPOBS_DEINTERLACE_FIELD_ORDER_BOTTOM
注意:去交错功能仅限于异步输入。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 输入的名称 | None | Unknown |
| ?inputUuid | String | 输入的UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| inputDeinterlaceFieldOrder | String | 删除输入的字段顺序 |
SetInputDeinterlaceFieldOrder
设置输入的去隔行字段顺序。
注意:去交错功能仅限于异步输入。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 输入的名称 | None | Unknown |
| ?inputUuid | String | 输入的UUID | None | Unknown |
| inputDeinterlaceFieldOrder | String | 删除输入的字段顺序 | None | N/A |
GetInputPropertiesListPropertyItems
从输入的属性中获取列表属性的项。
注意:在输入提供动态、可选择的项目列表的情况下使用此选项。例如,显示捕获,它提供可用显示的列表。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 输入的名称 | None | Unknown |
| ?inputUuid | String | 输入的UUID | None | Unknown |
| propertyName | String | 获取项目的列表属性的名称 | None | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| propertyItems | Array<Object> | 列表属性中的项目数组 |
PressInputPropertiesButton
按下输入属性中的按钮。
一些已知的propertyName值是:
refreshnocache:浏览器源代码重新加载按钮
注意:在输入属性中有一个按钮无法以任何其他方式访问的情况下使用此选项。例如,浏览器源代码,其中有一个刷新按钮。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 输入的名称 | None | Unknown |
| ?inputUuid | String | 输入的UUID | None | Unknown |
| propertyName | String | 要按的按钮属性的名称 | None | N/A |
Transitions Requests
GetTransitionKindList
获取所有可用转换类型的数组。
类似于 GetInputKindList
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| transitionKinds | Array<String> | 过渡类型数组 |
GetSceneTransitionList
获取OBS中所有场景过渡的数组。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| currentSceneTransitionName | String | 当前场景过渡的名称,可以为 null |
| currentSceneTransitionUuid | String | 当前场景转换的UUID,可以为 null |
| currentSceneTransitionKind | String | 当前场景过渡的类型,可以为 null |
| transitions | Array<Object> | 过渡数组 |
GetCurrentSceneTransition
获取有关当前场景过渡的信息。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| transitionName | String | 过渡名称 |
| transitionUuid | String | 转换的UUID |
| transitionKind | String | 过渡的类型 |
| transitionFixed | Boolean | 转换是否使用固定(不可配置)的持续时间 |
| transitionDuration | Number | 配置的转换持续时间(毫秒)。如果转换固定,则为 null |
| transitionConfigurable | Boolean | 过渡是否支持配置 |
| transitionSettings | Object | 转换设置的对象。如果转换不可配置,则为 null |
SetCurrentSceneTransition
设置当前场景过渡。
小提示:虽然场景过渡的名称空间通常是唯一的,但这种唯一性并不能保证,就像输入等其他资源一样。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| transitionName | String | 要激活的转换名称 | None | N/A |
SetCurrentSceneTransitionDuration
设置当前场景过渡的持续时间(如果不是固定的)。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| transitionDuration | Number | 持续时间(毫秒) | >= 50, <= 20000 | N/A |
SetCurrentSceneTransitionSettings
设置当前场景过渡的设置。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| transitionSettings | Object | 要应用于过渡的设置对象。可以是 {} |
None | N/A |
| ?overlay | Boolean | 是覆盖当前设置还是替换它们 | None | true |
GetCurrentSceneTransitionCursor
获取当前场景过渡的光标位置。
注意:当转换处于非活动状态时,transitionCursor 将返回1.0。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| transitionCursor | Number | 光标位置,介于0.0和1.0之间 |
TriggerStudioModeTransition
触发当前场景过渡。与工作室模式下的 Transition 按钮功能相同。
设置TBar的位置。
非常重要的一点是: 这将在obs websocket的未来版本中被弃用和替换。
SetTBarPosition
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| position | Number | 新的位置 | >= 0.0, <= 1.0 | N/A |
| ?release | Boolean | 是否发布TBar。只有当你知道你将发送另一个职位更新时,才设置 false |
None | true |
Filters Requests
GetSourceFilterKindList
获取所有可用源过滤器类型的数组。
类似于 GetInputKindList
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sourceFilterKinds | Array<String> | 源过滤器种类数组 |
GetSourceFilterList
获取源的所有过滤器的数组。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sourceName | String | 来源名称 | None | Unknown |
| ?sourceUuid | String | 源的UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| filters | Array<Object> | 过滤器阵列 |
GetSourceFilterDefaultSettings
获取过滤器类型的默认设置。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| filterKind | String | 过滤器类型以获取默认设置 | None | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| defaultFilterSettings | Object | 过滤器类型的默认设置对象 |
CreateSourceFilter
创建新过滤器,并将其添加到指定源。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sourceName | String | 要添加过滤器的源的名称 | None | Unknown |
| ?sourceUuid | String | 要添加过滤器的源的UUID | None | Unknown |
| filterName | String | 要创建的新过滤器的名称 | None | N/A |
| filterKind | String | 要创建的过滤器类型 | None | N/A |
| ?filterSettings | Object | 用于初始化过滤器的Settings对象 | None | 使用的默认设置 |
RemoveSourceFilter
从源中删除过滤器。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sourceName | String | 过滤器所在源的名称 | None | Unknown |
| ?sourceUuid | String | 过滤器所在源的UUID | None | Unknown |
| filterName | String | 要删除的过滤器的名称 | None | N/A |
SetSourceFilterName
设置源过滤器的名称(重命名)。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sourceName | String | 过滤器所在源的名称 | None | Unknown |
| ?sourceUuid | String | 过滤器所在源的UUID | None | Unknown |
| filterName | String | 过滤器的当前名称 | None | N/A |
| newFilterName | String | 过滤器的新名称 | None | N/A |
GetSourceFilter
获取特定源过滤器的信息。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sourceName | String | 来源名称 | None | Unknown |
| ?sourceUuid | String | 源的UUID | None | Unknown |
| filterName | String | 过滤器名称 | None | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| filterEnabled | Boolean | 过滤器是否启用 |
| filterIndex | Number | 列表中过滤器的索引,从0开始 |
| filterKind | String | 过滤器的种类 |
| filterSettings | Object | 与过滤器关联的设置对象 |
SetSourceFilterIndex
设置源上过滤器的索引位置。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sourceName | String | 过滤器所在源的名称 | None | Unknown |
| ?sourceUuid | String | None | Unknown | |
| filterName | String | 过滤器名称 | None | N/A |
| filterIndex | Number | 过滤器的新索引位置 | >= 0 | N/A |
SetSourceFilterSettings
设置源过滤器的设置。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sourceName | String | 过滤器所在源的名称 | None | Unknown |
| ?sourceUuid | String | 过滤器所在源的UUID | None | Unknown |
| filterName | String | 要设置的过滤器的名称 | None | N/A |
| filterSettings | Object | 要应用的设置对象 | None | N/A |
| ?overlay | Boolean | True :在现有设置的基础上应用这些设置,False :将输入重置为默认值,然后应用设置。 |
None | true |
SetSourceFilterEnabled
设置源过滤器的启用状态。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sourceName | String | 过滤器所在源的名称 | None | Unknown |
| ?sourceUuid | String | 过滤器所在源的UUID | None | Unknown |
| filterName | String | 过滤器名称 | None | N/A |
| filterEnabled | Boolean | 过滤器的新启用状态 | None | N/A |
Scene Items Requests
GetSceneItemList
获取场景中所有场景项的列表。
仅限场景
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 获取物品的场景名称 | None | Unknown |
| ?sceneUuid | String | 获取项目的场景UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneItems | Array<Object> | 场景中的场景项数组 |
GetGroupSceneItemList
基本上是GetSceneItemList,但用于组。
不鼓励在OBS中使用组,因为它们在引擎盖下非常破旧。请改用嵌套场景。
仅限组( Groups )
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 要获取项目的组的名称 | None | Unknown |
| ?sceneUuid | String | 获取项目的组的UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneItems | Array<Object> | 组中的场景项数组 |
GetSceneItemId
在场景中搜索源,并返回其id。
适用于场景和组
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 要搜索的场景或组的名称 | None | Unknown |
| ?sceneUuid | String | 要搜索的场景或组的UUID | None | Unknown |
| sourceName | String | 要查找的源的名称 | None | N/A |
| ?searchOffset | Number | 搜索过程中要跳过的匹配数。>=0表示先发。-1表示最后一个(顶部)项目 | >= -1 | 0 |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneItemId | Number | 场景项的数字ID |
GetSceneItemSource
获取与场景项关联的源。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 项目所在场景的名称 | None | Unknown |
| ?sceneUuid | String | 项目所在场景的UUID | None | Unknown |
| sceneItemId | Number | 场景项的数字ID | >= 0 | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sourceName | String | 与场景项关联的源的名称 |
| sourceUuid | String | 与场景项关联的源的UUID |
CreateSceneItem
使用源创建新的场景项。
仅限场景
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 要在其中创建新项目的场景名称 | None | Unknown |
| ?sceneUuid | String | 在中创建新项目的场景的UUID | None | Unknown |
| ?sourceName | String | 要添加到场景的源的名称 | None | Unknown |
| ?sourceUuid | String | 要添加到场景的源的UUID | None | Unknown |
| ?sceneItemEnabled | Boolean | 启用状态以在创建时应用于场景项 | None | True |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneItemId | Number | 场景项的数字ID |
RemoveSceneItem
从场景中删除场景项。
仅限场景
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 项目所在场景的名称 | None | Unknown |
| ?sceneUuid | String | 项目所在场景的UUID | None | Unknown |
| sceneItemId | Number | 场景项的数字ID | >= 0 | N/A |
DuplicateSceneItem
复制场景项,复制所有变换和裁剪信息。
仅限场景
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 项目所在场景的名称 | None | Unknown |
| ?sceneUuid | String | 项目所在场景的UUID | None | Unknown |
| sceneItemId | Number | 场景项的数字ID | >= 0 | N/A |
| ?destinationSceneName | String | 在中创建复制项的场景名称 | None | 假设场景 |
| ?destinationSceneUuid | String | 在中创建复制项的场景的UUID | None | 假设场景 |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneItemId | Number | 复制场景项的数字ID |
GetSceneItemTransform
获取场景项的变换和裁剪信息。
适用于场景和组
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 项目所在场景的名称 | None | Unknown |
| ?sceneUuid | String | 项目所在场景的UUID | None | Unknown |
| sceneItemId | Number | 场景项的数字ID | >= 0 | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneItemTransform | Object | 包含场景项变换信息的对象 |
SetSceneItemTransform
设置场景项的变换和裁剪信息。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 项目所在场景的名称 | None | Unknown |
| ?sceneUuid | String | 项目所在场景的UUID | None | Unknown |
| sceneItemId | Number | 场景项的数字ID | >= 0 | N/A |
| sceneItemTransform | Object | 包含要更新的场景项变换信息的对象 | None | N/A |
GetSceneItemEnabled
获取场景项的启用状态。
适用于场景和组
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 项目所在场景的名称 | None | Unknown |
| ?sceneUuid | String | 项目所在场景的UUID | None | Unknown |
| sceneItemId | Number | 场景项的数字ID | >= 0 | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneItemEnabled | Boolean | 场景项是否启用。启用为true,禁用为false |
SetSceneItemEnabled
设置场景项的启用状态。
适用于场景和组
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 项目所在场景的名称 | None | Unknown |
| ?sceneUuid | String | 项目所在场景的UUID | None | Unknown |
| sceneItemId | Number | 场景项的数字ID | >= 0 | N/A |
| sceneItemEnabled | Boolean | 场景项的新启用状态 | None | N/A |
GetSceneItemLocked
获取场景项的锁定状态。
适用于场景和组
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 项目所在场景的名称 | None | Unknown |
| ?sceneUuid | String | 项目所在场景的UUID | None | Unknown |
| sceneItemId | Number | 场景项的数字ID | >= 0 | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneItemLocked | Boolean | 场景项是否已锁定。 true 表示已锁定, false 表示未锁定 |
SetSceneItemLocked
设置场景项的锁定状态。
适用于场景和组
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 项目所在场景的名称 | None | Unknown |
| ?sceneUuid | String | 项目所在场景的UUID | None | Unknown |
| sceneItemId | Number | 场景项的数字ID | >= 0 | N/A |
| sceneItemLocked | Boolean | 场景项的新锁定状态 | None | N/A |
GetSceneItemIndex
获取场景中场景项的索引位置。
索引0位于UI中源列表的底部。
适用于场景和组
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 项目所在场景的名称 | None | Unknown |
| ?sceneUuid | String | 项目所在场景的UUID | None | Unknown |
| sceneItemId | Number | 场景项的数字ID | >= 0 | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneItemIndex | Number | 场景项的索引位置 |
SetSceneItemIndex
设置场景中场景项的索引位置。
适用于场景和组
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 项目所在场景的名称 | None | Unknown |
| ?sceneUuid | String | 项目所在场景的UUID | None | Unknown |
| sceneItemId | Number | 场景项的数字ID | >= 0 | N/A |
| sceneItemIndex | Number | 场景项的新索引位置 | >= 0 | N/A |
GetSceneItemBlendMode
获取场景项的混合模式。
混合模式:
OBS_BLEND_NORMALOBS_BLEND_ADDITIVEOBS_BLEND_SUBTRACTOBS_BLEND_SCREENOBS_BLEND_MULTIPLYOBS_BLEND_LIGHTENOBS_BLEND_DARKEN
适用于场景和组
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 项目所在场景的名称 | None | Unknown |
| ?sceneUuid | String | 项目所在场景的UUID | None | Unknown |
| sceneItemId | Number | 场景项的数字ID | >= 0 | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| sceneItemBlendMode | String | 当前混合模式 |
SetSceneItemBlendMode
设置场景项的混合模式。
适用于场景和组
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sceneName | String | 项目所在场景的名称 | None | Unknown |
| ?sceneUuid | String | 项目所在场景的UUID | None | Unknown |
| sceneItemId | Number | 场景项的数字ID | >= 0 | N/A |
| sceneItemBlendMode | String | 新的混合模式 | None | N/A |
Outputs Requests
GetVirtualCamStatus
获取virtualcam输出的状态。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 输出是否处于活动状态 |
ToggleVirtualCam
切换virtualcam输出的状态。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 输出是否处于活动状态 |
StartVirtualCam
启动virtualcam输出。
StopVirtualCam
停止virtualcam输出。
GetReplayBufferStatus
获取重播缓冲区输出的状态。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 输出是否处于活动状态 |
ToggleReplayBuffer
切换重放缓冲区输出的状态。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 输出是否处于活动状态 |
StartReplayBuffer
启动重放缓冲区输出。
StopReplayBuffer
停止重放缓冲区输出。
SaveReplayBuffer
保存重放缓冲区输出的内容。
GetLastReplayBufferReplay
获取最后一个重播缓冲区保存文件的文件名。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| savedReplayPath | String | 文件路径 |
GetOutputList
获取可用输出的列表。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputs | Array<Object> | 输出数组 |
GetOutputStatus
获取输出的状态。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| outputName | String | 输出名称 | None | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 输出是否处于活动状态 |
| outputReconnecting | Boolean | 输出是否正在重新连接 |
| outputTimecode | String | 输出的当前格式化时间码字符串 |
| outputDuration | Number | 输出的当前持续时间(毫秒) |
| outputCongestion | Number | 输出拥堵 |
| outputBytes | Number | 输出发送的字节数 |
| outputSkippedFrames | Number | 输出进程跳过的帧数 |
| outputTotalFrames | Number | 输出过程交付的帧总数 |
ToggleOutput
切换输出的状态。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| outputName | String | 输出名称 | None | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 输出是否处于活动状态 |
StartOutput
启动输出。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| outputName | String | 输出名称 | None | N/A |
StopOutput
停止输出。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| outputName | String | 输出名称 | None | N/A |
GetOutputSettings
获取输出的设置。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| outputName | String | 输出名称 | None | N/A |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputSettings | Object | 输出设置 |
SetOutputSettings
设置输出的设置。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| outputName | String | 输出名称 | None | N/A |
| outputSettings | Object | 输出设置 | None | N/A |
Stream Requests
GetStreamStatus
获取流输出的状态。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 输出是否处于活动状态 |
| outputReconnecting | Boolean | 输出当前是否正在重新连接 |
| outputTimecode | String | 输出的当前格式化时间码字符串 |
| outputDuration | Number | 输出的当前持续时间(毫秒) |
| outputCongestion | Number | 输出拥堵 |
| outputBytes | Number | 输出发送的字节数 |
| outputSkippedFrames | Number | 输出进程跳过的帧数 |
| outputTotalFrames | Number | 输出过程交付的帧总数 |
ToggleStream
切换流输出的状态。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 流输出的新状态 |
StartStream
启动流输出。
StopStream
停止流输出。
SendStreamCaption
通过流输出发送CEA-608字幕文本。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| captionText | String | 图片说明文字 | None | N/A |
Record Requests
GetRecordStatus
获取记录输出的状态。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 输出是否处于活动状态 |
| outputPaused | Boolean | 输出是否暂停 |
| outputTimecode | String | 输出的当前格式化时间码字符串 |
| outputDuration | Number | 输出的当前持续时间(毫秒) |
| outputBytes | Number | 输出发送的字节数 |
ToggleRecord
切换记录输出的状态。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| outputActive | Boolean | 输出的新活动状态 |
StartRecord
开始记录输出。
StopRecord
停止记录输出。
ToggleRecordPause
切换记录输出的暂停。
PauseRecord
暂停记录输出。
ResumeRecord
恢复记录输出。
SplitRecordFile
将当前正在录制的文件拆分为新文件。
CreateRecordChapter
将新的章节标记添加到当前正在录制的文件中。
注意:从OBS 30.2.0开始,支持此功能的唯一文件格式是混合MP4。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?chapterName | String | 新章节的名称 | None | Unknown |
Media Inputs Requests
GetMediaInputStatus
获取媒体输入的状态。
媒体状态:
OBS_MEDIA_STATE_NONEOBS_MEDIA_STATE_PLAYINGOBS_MEDIA_STATE_OPENINGOBS_MEDIA_STATE_BUFFERINGOBS_MEDIA_STATE_PAUSEDOBS_MEDIA_STATE_STOPPEDOBS_MEDIA_STATE_ENDEDOBS_MEDIA_STATE_ERROR
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 媒体输入的名称 | None | Unknown |
| ?inputUuid | String | 媒体输入的UUID | None | Unknown |
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| mediaState | String | 媒体投入状况 |
| mediaDuration | Number | 播放媒体的总持续时间(毫秒)。如果不玩,则为 null |
| mediaCursor | Number | 光标的位置(毫秒)。如果不玩,则为 null |
SetMediaInputCursor
设置媒体输入的光标位置。
此请求不执行光标位置的边界检查。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 媒体输入的名称 | None | Unknown |
| ?inputUuid | String | 媒体输入的UUID | None | Unknown |
| mediaCursor | Number | 要设置的新光标位置 | >= 0 | N/A |
OffsetMediaInputCursor
将媒体输入的当前光标位置偏移指定值。
此请求不执行光标位置的边界检查。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 媒体输入的名称 | None | Unknown |
| ?inputUuid | String | 媒体输入的UUID | None | Unknown |
| mediaCursorOffset | Number | 用于偏移当前光标位置的值 | None | N/A |
TriggerMediaInputAction
在媒体输入上触发操作。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 媒体输入的名称 | None | Unknown |
| ?inputUuid | String | 媒体输入的UUID | None | Unknown |
| mediaAction | String | ObsMediaInputAction 枚举的标识符 |
None | N/A |
Ui Requests
GetStudioModeEnabled
获取 Studio 是否已启用。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| studioModeEnabled | Boolean | 是否启用 Studio 模式 |
SetStudioModeEnabled
启用或禁用演播室模式
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| studioModeEnabled | Boolean | True == Enabled, False == Disabled | None | N/A |
OpenInputPropertiesDialog
打开输入的属性对话框。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 打开对话框的输入名称 | None | Unknown |
| ?inputUuid | String | 打开对话框的输入的UUID | None | Unknown |
OpenInputFiltersDialog
打开输入的过滤器对话框。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 打开对话框的输入名称 | None | Unknown |
| ?inputUuid | String | 打开对话框的输入的UUID | None | Unknown |
OpenInputInteractDialog
打开输入的交互对话框。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?inputName | String | 打开对话框的输入名称 | None | Unknown |
| ?inputUuid | String | 打开对话框的输入的UUID | None | Unknown |
GetMonitorList
获取已连接监视器的列表及其相关信息。
反馈字段:
| 字段名 | 类型 | 描述 |
|---|---|---|
| monitors | Array<Object> | 检测到的监视器列表,其中包含一些信息 |
OpenVideoMixProjector
打开投影仪以进行特定的输出视频混合。
混合类型:
OBS_WEBSOCKET_VIDEO_MIX_TYPE_PREVIEWOBS_WEBSOCKET_VIDEO_MIX_TYPE_PROGRAMOBS_WEBSOCKET_VIDEO_MIX_TYPE_MULTIVIEW
注意:此请求旨在提供与4.x相同的功能。在未来的版本中,它很可能会被更改/弃用。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| videoMixType | String | 待打开的混合物类型 | None | N/A |
| ?monitorIndex | Number | Monitor index, use GetMonitorList to obtain index |
None | -1:以窗口模式打开投影仪 |
| ?projectorGeometry | String | 窗口投影仪的大小/位置数据,采用Qt Base64编码格式。与monitorIndex相互排斥 |
None | N/A |
OpenSourceProjector
打开源的投影仪。
注意:此请求旨在提供与4.x相同的功能。在未来的版本中,它很可能会被更改/弃用。
请求字段:
| 字段名 | 类型 | 描述 | 取值限制 | 默认行为 |
|---|---|---|---|---|
| ?sourceName | String | 要打开投影仪的源名称 | None | Unknown |
| ?sourceUuid | String | 打开投影仪的源的UUID | None | Unknown |
| ?monitorIndex | Number | 监控索引,使用GetMonitorList获取索引 |
None | -1: Opens projector in windowed mode |
| ?projectorGeometry | String | 窗口投影仪的大小/位置数据,采用Qt Base64编码格式。与monitorIndex相互排斥 |
None | N/A |