obs-websocket 5.x.x Protocol 全中文翻译

由于最近要用到 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_NONE
  • OBS_MONITORING_TYPE_MONITOR_ONLY
  • OBS_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_NONE
  • OBS_MONITORING_TYPE_MONITOR_ONLY
  • OBS_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_DISABLE
  • OBS_DEINTERLACE_MODE_DISCARD
  • OBS_DEINTERLACE_MODE_RETRO
  • OBS_DEINTERLACE_MODE_BLEND
  • OBS_DEINTERLACE_MODE_BLEND_2X
  • OBS_DEINTERLACE_MODE_LINEAR
  • OBS_DEINTERLACE_MODE_LINEAR_2X
  • OBS_DEINTERLACE_MODE_YADIF
  • OBS_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_TOP
  • OBS_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_NORMAL
  • OBS_BLEND_ADDITIVE
  • OBS_BLEND_SUBTRACT
  • OBS_BLEND_SCREEN
  • OBS_BLEND_MULTIPLY
  • OBS_BLEND_LIGHTEN
  • OBS_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_NONE
  • OBS_MEDIA_STATE_PLAYING
  • OBS_MEDIA_STATE_OPENING
  • OBS_MEDIA_STATE_BUFFERING
  • OBS_MEDIA_STATE_PAUSED
  • OBS_MEDIA_STATE_STOPPED
  • OBS_MEDIA_STATE_ENDED
  • OBS_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_PREVIEW
  • OBS_WEBSOCKET_VIDEO_MIX_TYPE_PROGRAM
  • OBS_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

相关推荐
基哥的奋斗历程3 小时前
从零部署HTTPS网站完整指南-第一章
网络协议·http·https
kyle~3 小时前
Linux---scp 安全文件传输
linux·网络·安全
翼龙云_cloud3 小时前
阿里云渠道商:无影云手机配置虚拟网络(VPC)常见问题有哪些?
网络·阿里云·智能手机
车载测试工程师3 小时前
CAPL学习-SOME/IP交互层-客户端API函数
网络·学习·tcp/ip·capl·canoe
阿杰同学3 小时前
Java 网络协议面试题答案整理,最新面试题
java·开发语言·网络协议
lcyw3 小时前
A MSE+Fmp4+websocket+H265播放器
网络·websocket·网络协议
运维行者_3 小时前
PostgreSQL 十大性能问题及解决方案
运维·服务器·网络·数据库·postgresql·智能路由器·snmp
卓码软件测评3 小时前
Gatling WebSocket测试支持:ws、wsConnect、sendText、checkTextMessage详解
网络·websocket·网络协议·测试工具·ci/cd·自动化
@Dream-fennel3 小时前
WebSocket教程:如何使用JMeter进行压力测试
websocket·jmeter·压力测试