综述
JSON(JavaScript 对象表示法)是一种用于交换数据的轻量级格式。它基于 JavaScript 语言子集:对象在 JavaScript 中的构建方式。
JSON(JavaScript 对象表示法)是一种用于交换数据的轻量级格式。它基于 JavaScript 语言子集:对象在 JavaScript 中的构建方式。
JSON 基于两种结构:
以下是 JSON 数据示例:
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]
}
JSON 使用 JSON RPC(基于 REST)与 Event Master 处理器(如 E2、S3-4K 和 EX)进行交互。JSON-RPC 是以 JSON 编码的远程过程调用协议。
JSON-RPC 通过向实现此协议的服务器发送请求来运行。在这种情况下,客户端通常是计划用于调用远程系统的单个方法的软件。可将多个输入参数作为数组或对象传递给远程方法,而方法本身也可以返回多个输出数据。
定义了 JSON RPC 以在 Event Master 处理器上执行任务。用户需要通过其应用程序或开源应用程序发送 JSON 请求。
这些应用程序应在运行 Event Master 处理器的 IP 和固定端口 9999 发送请求( Event Master 处理器的 Webserver 端口 9999 上运行)。
要从 Web 应用程序使用 JSON API,请在菜单导航栏选择设置图标,然后从 Web 应用仪表板选择JSONRPC API。

以下是为控制 Event Master 处理器定义的部分 JSON API。如果您已设置了一台主要/从属 Event Master,则必须向主要设备发送 JSON。此节阐释了 RPC 调用中传递或调用的参数,对所有请求适用。如果 参数 对象为空,即表示 API 不需要参数。
allTrans
定义:
请求:
{} - 不需要任何参数。响应:
例如:
{"params":{}, "method":"allTrans",
"id":"1234", "jsonrpc":"2.0"}cut
定义:
请求:
{} - 不需要任何参数。响应:
例如:
{"params":{}, "method":"cut",
"id":"1234", "jsonrpc":"2.0"}resetFrameSettings
定义:
请求:
params: {"reset":x},
“x”可以是0 – 5
响应:
例如:
{"params":{"reset": 0}, "method":"resetFrameSettings",
"id":"1234", "jsonrpc":"2.0"}powerStatus
定义:
请求:
{} - 不需要任何参数。响应:
response: {FrameId1 :{ PwrStatus1, PwrStatus2},{FrameId2
:{ PwrStatus1, PwrStatus2}
PwrStatus1 提供 Event Master 处理器中第一个插槽的电源状态,帧 ID 为 FrameId1、FrameId2。
PwrStatus2 提供 Event Master 处理器中第二个插槽的电源状态,帧 ID 为 FrameId1、FrameId2。
例如:
{"params":{}, "method":"powerStatus",
"id":"1234", "jsonrpc":"2.0"}listPresets
定义:
请求:
params: {"ScreenDest":x , "AuxDest":x},
“x”可以是:
响应:
response: Array of: [{"id": 0, "Name":
"Preset3.00", "LockMode": 0, "presetSno":
3.00}, {"id": 1, "Name": "Preset4.00",
"LockMode": 0, "presetSno": 4.00}]
例如:
{"params":{"ScreenDest": 0}, "method":"listPresets",
"id":"1234", "jsonrpc":"2.0"}listDestinationsForPreset
定义:
请求:
params: {"id":x },
“x”可以是:
响应:
response: Array of: [{"id": 0, "Name":
"Preset3.00", "LockMode": 0, "presetSno":
3.00, "ScreenDest":[{"id": 0}, {"id":
3}],"AuxDest":[{"id": 0},
{"id": 1}]}]
例如:
{ "params":{"id": 0}, "method":"listDestinationsForPreset",
"id":"1234",
"jsonrpc":"2.0"}
savePreset
定义:
请求:
params: {"presetName": "NewPreset",
"ScreenDestination":[{"id": 2}, {"id":
3}],
"AuxDestination":[{"id": 1}, {"id":
2}]}
响应:
例如:
{"params": {"presetName": "NewPreset"},
"method":"savePreset", "id":"1234",
"jsonrpc":"2.0"}
{"params": {"presetName": "NewPreset",
"ScreenDestination":
{"id": 0},"AuxDestination":{"id":
0}}, "method":"savePreset", "id":"1234",
"jsonrpc":"2.0"}
关于预设值的要点(与重命名、激活和删除相同):
“presetSno”- 预设值序列号。如有必要,用户可提供浮点数。例如:"presetSno": 1.01、"presetSno": 1.00、"presetSno": 1、"presetSno": 1.1、"presetSno": 1.10。
请注意,1.1 和 1.10 或 1.00 和 1 相同。
renamePreset
定义:
请求参数:
{"id": x, "newPresetName":
"NewPresetName"}{"presetSno": x.y, "newPresetName":
"NewPresetName"}params: {"presetName": "OldPresetName",
"newPresetName": "NewPresetName"}
响应:
例如:
{"params": {"id": 0, "newPresetName": " newPresetName "},
"method":"renamePreset", "id":"1234",
"jsonrpc":"2.0"}
{"params": {"presetName": "NewPreset", "newPresetName": "NewPresetName"},
"method":"renamePreset", "id":"1234",
"jsonrpc":"2.0"}
{"params": {"presetSno": 1.00, "newPresetName": " newPresetName "},
"method":"renamePreset", "id":"1234",
"jsonrpc":"2.0"}
activatePreset
定义:
请求参数:
{"id": x, "type": x}{"presetSno": x.y, "type":
x}params: {"presetName": "PresetName"}
“类型”- 值为 0 时在预览中回复(默认),值为 1 时在节目中恢复。
这不是必填参数,但是如果用户需要在节目中恢复预设值,则必须提供。
响应:
例如:
{"params": {"id": 0, "type":
0}, "method":"activatePreset",
"id":"1234", "jsonrpc":"2.0"}
//Recall in preview with id 0.
{"params": {"presetName": "abc"
}, "method":"activatePreset",
"id":"1234", "jsonrpc":"2.0"}
//Recall in preview with preset name "abc".
{"params": {"presetSno": 1.00, "type":
1}, "method":"activatePreset",
"id":"1234", "jsonrpc":"2.0"}
//Recall in program with presetSno 1.
recallNextPreset
定义:
在 Event Master 处理器上恢复下一预设值。
无需参数。
请求:
{}响应:
例如:
{"params": {}, "method":"recallNextPreset",
"id":"1234", "jsonrpc":"2.0"}deletePreset
定义:
在 Event Master 处理器上删除预设值。
用户可使用 ID、预设值序列号或预设值名称删除预设值。
请求:
{"id": x}{"presetSno": x.y}{"presetName": "PresetName"}响应:
例如:
{"params": {"id": 1}, "method":"deletePreset",
"id":"1234", "jsonrpc":"2.0"}{"params": {"presetSno": 1.00}, "method":"deletePreset",
"id":"1234", "jsonrpc":"2.0"}{"params": {"presetName": "Preset
5.00"}, "method":"deletePreset",
"id":"1234", "jsonrpc":"2.0"}
listDestinations
定义:
请求:
params: {"type": x}
0 - 显示所有目标。
0 是 type 参数的默认值。
响应:
response: Array of : {"ScreenDestination":[{"id":
0, "Name": "Dest1", "HSize": 3840,
"VSize": 1080, "Layers": 1,"DestOutMapColl":[{"id":
0"DestOutMap":[{"id":
0, "Name": "Out1", "HPos":
0, "VPos": 0, "HSize": 1920, "VSize":1080,
"Freeze": 0},{"id": 1, "Name":
"Out2", "HPos": 1920, "VPos": 0,
"HSize": 1920, "VSize":1080, "Freeze":
1}]}]}],"AuxDestination":
[{"id": 0, "AuxStreamMode": 4}, {"id":
1, "AuxStreamMode": 4}]}"
例如:
{"params": {"type": 0}, "method":"listDestinations",
"id":"1234", "jsonrpc":"2.0"}listSources
定义:
请求:
params: {"type": x}
0 - 显示所有输入源。
0 是 type 参数的默认值。
响应:
response: Array of : {"id": 0, "Name":
"InSource1", "HSize": 3840, "VSize":
1080,
"SrcType": 0, "InputCfgIndex": -1,
"StillIndex": 0, "DestIndex": -1,
"UserKeyIndex": -1, "Mode3D": 0, "Freeze":
1, "Capacity": 2,
"InputCfgVideoStatus": 4}
SrcType:0 = 输入,1 = 静帧
InputCfgVideoStatus:输入视频状态
例如:
{"params": {"type": 0}, "method":"listSources",
"id":"1234", "jsonrpc":"2.0"}listContent
定义:
请求:
params: {"id": x}
响应:
response: { "id": 0, "Name": "ScreenDest1""BGLyr":[{"id":
0, "LastBGSourceIndex":
0, "BGShowMatte":0, "BGColor":[{"id":0,
"Red":0, "Green":0, "Blue":0}]},
{"id": 1, "LastBGSourceIndex": 0,
"BGShowMatte":0, "BGColor":[{"id":0,
"Red":0, "Green":0, "Blue":0}]}],(0
= PGM Background, 1 = PVW Background)
"Layers":[{"id": 0, "LastSrcIdx":
0, "HPos": 0, "VPos": 0, "HSize": 400,
"VSize": 300, "PvwMode": 0, "PgmMode":
0, "Freeze": 0, "FlexZOrder":
0,"LayerTrans":[{"id": 0, "TransTime":
30, "TransPos": 0}, {"id": 1,
"TransTime": 30, "TransPos": 0}]
, "3D": "Yes", "Freeze": 0, "Capacity":
2}]}]}
BGLyr - 背景图层索引、背景上一个源索引。
“id”:0 影响节目中的背景。“id”:1 影响预览中的背景。
例如:
{"params": {"id": 0}, "method":"listContent",
"id":"1234", "jsonrpc":"2.0"}activateCue
定义:
请求:
params: {"id": 1, "type": x}, "method":"activateCue",
"id":"1234", "jsonrpc":"2.0"}
{"cueName": "Cue1", "type":
x}, "method":"activateCue", "id":"1234",
"jsonrpc":"2.0"}{"cueSerialNo": 1.00, "type":
x}, "method":"activateCue", "id":"1234",
"jsonrpc":"2.0"}响应:
例如:
{"params": {"id": 1}, "method":"activateCue",
"id":"1234", "jsonrpc":"2.0"}
//Play – no parame or type 0{"params": {"type": 1}, "method":"activateCue",
"id":"1234", "jsonrpc":"2.0"}
//Pause – type 1{"params": {"type": 2}, "method":"activateCue",
"id":"1234", "jsonrpc":"2.0"}
//Stop – type 2activateDestGroup
定义:
请求:
{"id": x}{"destGrpSno": x.y}{"destGrName": "GroupName"}响应:
例如:
{"params": {"id": 0}, "method":"activateDestGroup",
"id":"1234", "jsonrpc":"2.0"}{"params": {"destGrpName": "abc"
}, "method":"activateDestGroup", "id":"1234",
"jsonrpc":"2.0"}{"params": {"destGrpSno": 1.00}, "method":"activateDestGroup",
"id":"1234", "jsonrpc":"2.0"}listCues
定义:
请求:
{}, "method":"listCues", "id":"1234",
"jsonrpc":"2.0"}响应:
例如:
{"params": {}, "method":"listCues",
"id":"1234", "jsonrpc":"2.0"}3dControl
定义:
请求:
params: {"id" : id, "type": x, "syncSource":
y, "syncInvert": z}
响应:
response: {"id": 0, "Name": "InSource1",
"HSize": 3840, "VSize": 1080,
"Src-Type": 0, "InputCfgIndex": -1,
"StillIndex": 0, "DestIndex": -1,
"UserKeyIndex": -1, "Mode3D": 0,
"Freeze": 1, "Capacity": 2,
"InputCfgVideoStatus": 4}
例如:
{"params": {"id": 1, "type":
0, "syncSource": 1, "syncInvert": 0},
"method":"3dControl", "id":"1234",
"jsonrpc":"2.0"}
changeContent
定义:
请求:
params: {"id":0,"BGLyr":[{"id":0,"LastBGSourceIndex":0,"BGShowMatte":0,
"BGColor":[{"id":0,"Red":0,"Green":0,"Blue":0}]},{"id":1,
"LastBGSourceIndex":0,"BGShowMatte":0,"BGColor":
[{"id":0,"Red":0,"Green":0,"Blue":0}]}],"Layers":
[{"id":0,"LastSrcIdx":0,"Window":{"HPos":0,"VPos":0,"HSize":400,"VSize":300},
"Source":{"HPos":0,"VPos":0,"HSize":1920,"VSize":1080},
"Mask":
{ "Left":0.01, "Right":10.1, "Top":0.0,"Bottom":0.0},"PvwMode":1,"PgmMode":0,
"Freeze":0,"PgmZOrder":0,"PvwZOrder":0}]}
BGLyr - 背景图层索引、背景上一个源索引。
“id”:0 影响节目中的背景。“id”:1 影响预览中的背景。
响应:
例如:
{"params":{"id":0,"BGLyr":[{"id":0,"LastBGSourceIndex":0,"BGShowMatte":0,
"BGColor":[{"id":0,"Red":0,"Green":0,"Blue":0}]},{"id":1,
"LastBGSourceIndex":0,"BGShowMatte":0,"BGColor":[{"id":0,"Red":0,
"Green":0,"Blue":0}]}],"Layers":[{"id":0,"LastSrcIdx":0,
"Window":{"HPos":0,"VPos":0,"HSize":400,"VSize":300},
"Source":{"HPos":0,"VPos":0,"HSize":1920,"VSize":1080},
"Mask":{ "Left":0.01, "Right":10.1,
"Top":0.0,"Bottom":0.0},
"PvwMode":1,"PgmMode":0,"Freeze":0,"PgmZOrder":0,"PvwZOrder":0}]},
"method":"changeContent", "id":"1234",
"jsonrpc":"2.0"}.
{"params":{"id":0, "TestPattern"
:5 }, "method":"changeContent", "id":"1234",
"jsonrpc":"2.0"}freezeDestSource
定义:
请求:
params: {"type": x, "id": y, "screengroup":
z ,"mode": 0/1}
type - 源类型。
响应:
例如:
{"params": {"type": 0, "id":
0, "screengroup": 0 ,"mode": 1},
"method":"freezeDestSource", "id":"1234",
"jsonrpc":"2.0"}
listStill
定义:
请求:
{}响应:
response: Array of : [{"id":0,"Name":"StillStore1",
"LockMode":0,"HSize":{"Min":0,"Max":99999,"$t":1920},"VSize":{"Min":0,
"Max":99999,"$t":1080},"StillState":{"Min":0,"Max":4,"$t":3},"PngState":
{"Min":0,"Max":2,"$t":0},"FileSize":{"Min":0,"Max":100000,"$t":9331.2}}]
例如:
{"params": {}, "method":"listStill",
"id":"1234", "jsonrpc":"2.0"}deleteStill
定义:
请求:
params: {"id": x}
响应:
例如:
{"params":{"id": 0}, "method":"deleteStill",
"id":"1234", "jsonrpc":"2.0"}takeStill
定义:
请求:
params: { "type": x, "id": y, "file":
z}
响应:
例如:
{"params":{"type":0 , "id":
1, "file": 5}, "method":"takeStill",
"id":"1234",
"jsonrpc":"2.0"}
getFrameSettings
定义:
请求:
{}响应:
{"System":{"id":0,"Name":"System1","FrameCollection":{"id":0,"Frame":
{"id":"00:0c:29:0e:86:d4","Name":"E2","Contact":"","Version":"4.2.30738",
"OSVersion":"NA","FrameType":0,"FrameTypeName":"E2","Enet":{"DhcpMode":0,
"DhcpModeName":"Static","IP":"10.98.0.165","StaticIP":"192.168.000.175",
"MacAddress":"00:0c:29:0e:86:d4","StaticMask":"255.255.255.000",
"StaticGateway":"192.168.000.001"},"SysCard":{"SlotState":2,
"CardStatusID":2,"CardStatusLabel":"Ready","CardTypeID":80,
"CardTypeLabel":"System","CardID":0},"Slot":[{"Card":{"CardStatusID":2,
"CardStatusLabel":"Ready","CardTypeID":70,"CardTypeLabel":"Expansion",
"CardID":"thisissometextforid0"}},{"Card":{"CardStatusID":2,"CardStatusLabel":
"Ready","CardTypeID":70,"CardTypeLabel":"Expansion","CardID":
"thisissometextforid1"}},{"Card":{"CardStatusID":0,"CardStatusLabel":
"Not Installed","CardTypeID":255,"CardTypeLabel":"Unknown","CardID":
"Undefined"}},{"Card":{"CardStatusID":2,"CardStatusLabel":"Ready",
"CardTypeID":1,"CardTypeLabel":"SDI
Input","CardID":"thisissometextforid211"}},
{"Card":{"CardStatusID":2,"CardStatusLabel":"Ready","CardTypeID":3,"CardID":
"thisissometextforid2"}},{"Card":{"CardStatusID":2,"CardStatusLabel":"Ready",
"CardTypeID":0,"CardTypeLabel":"DVI
Input","CardID":"thisissometextforid4"}},
{"Card":{"CardStatusID":2,"CardStatusLabel":"Ready","CardTypeID":2,
"CardTypeLabel":"HDMI/DP Input","CardID":"thisissometextforid5"}},
{"Card":{"CardStatusID":2,"CardStatusLabel":"Ready","CardTypeID":2,
"CardTypeLabel":"HDMI/DP Input","CardID":"thisissometextforid7"}},
{"Card":{"CardStatusID":2,"CardStatusLabel":"Ready","CardTypeID":2,
"CardTypeLabel":"HDMI/DP Input","CardID":"thisissometextforid8"}},
{"Card":{"CardStatusID":2,"CardStatusLabel":"Ready","CardTypeID":2,
"CardTypeLabel":"HDMI/DP Input","CardID":"thisissometextforid9"}},
{"Card":{"CardStatusID":2,"CardStatusLabel":"Ready","CardTypeID":22,
"CardTypeLabel":"HDMI Output","CardID":"CardID3"}},{"Card":{"CardStatusID":2,
"CardStatusLabel":"Ready","CardTypeID":22,"CardTypeLabel":"HDMI
Output",
"CardID":"CardID4"}},{"Card":{"CardStatusID":2,"CardStatusLabel":"Ready",
"CardTypeID":21,"CardTypeLabel":"SDI
Output","CardID":"CardID415"}},
{"Card":{"CardStatusID":2,"CardStatusLabel":"Ready","CardTypeID":40,
"CardTypeLabel":"MVR","CardID":"CardID15"}},{"Card":{"CardStatusID":2,
"CardStatusLabel":"Ready","CardTypeID":50,"CardTypeLabel":"VPU
Scaler",
"CardID":"thisissometextforid501"}},{"Card":{"CardStatusID":2,
"CardStatusLabel":"Ready","CardTypeID":50,"CardTypeLabel":"VPU
Scaler",
"CardID":"thisissometextforid502"}},{"Card":{"CardStatusID":2,
"CardStatusLabel":"Ready","CardTypeID":50,"CardTypeLabel":"VPU
Scaler",
"CardID":"thisissometextforid503"}},{"Card":{"CardStatusID":2,
"CardStatusLabel":"Ready","CardTypeID":50,"CardTypeLabel":"VPU
Scaler",
"CardID":"thisissometextforid504"}},{"Card":{"CardStatusID":0,
"CardStatusLabel":"Not Installed","CardTypeID":255,"CardTypeLabel":
"Unknown","CardID":"Undefined"}},{"Card":{"CardStatusID":2,"CardStatusLabel":
"Ready","CardTypeID":50,"CardTypeLabel":"VPU
Scaler","CardID":
"thisissometextforid505"}},{"Card":{"CardStatusID":2,"CardStatusLabel":"Ready",
"CardTypeID":50,"CardTypeLabel":"VPU
Scaler","CardID":
"thisissometextforid506"}},{"Card":{"CardStatusID":2,"CardStatusLabel":"Ready",
"CardTypeID":50,"CardTypeLabel":"VPU
Scaler","CardID":
"thisissometextforid507"}},{"Card":{"CardStatusID":2,"CardStatusLabel":"Ready",
"CardTypeID":50,"CardTypeLabel":"VPU
Scaler","CardID":
"thisissometextforid508"}}]}}}}}
例如:
{"params":{}, "method":"getFrameSettings",
"id":"1234", "jsonrpc":"2.0"}listAuxContent
定义:
请求:
params: {"id" : x}
响应:
response: {"id":0,"Name":"AuxDest1","PvwLastSrcIndex":0,"PgmLastSrcIndex":0}
例如:
{"params": {"id": 0}, "method":"listAuxContent",
"id":"1234", "jsonrpc":"2.0"}changeAuxContent
定义:
请求:
params: {"id":x , "Name": "AuxDest1"
, "PvwLastSrcIndex": y , "PgmLastSrcIndex": z}
响应:
例如:
{"params": {"id":0 , "Name":
"AuxDest1" , "PvwLastSrcIndex": 6 ,
"PgmLastSrcIndex": 1}, "method":"changeAuxContent",
"id":"1234", "jsonrpc":"2.0"}
{"params":{"id":0, "TestPattern"
:3 }, "method":"changeAuxContent", "id":"1234",
"jsonrpc":"2.0"}从基于 JSON 的应用程序完成订阅后,如果用户订阅的应用程序所在的 IP 端口发生了更改,则会向运行应用程序的 IP 端口发送通知。
实际通知作为 HTTP Post 异步发送,采用以下结构:{result: {method:
"notification",notificationType: "ScreenDestChanged",change:
{ add: [2],
remove: [], update: [0, 1, 2] }}}.
更改字段包含已添加/删除或更新的屏幕的 XmlId。
subscribe
定义:
请求:
参数: {"hostname": hostname, "port":
port, "notification" : notificationType[]}
hostname - 通知发送至的主机名或 IP 地址。
port - 通知发布至的 TCP 端口。
notificationTypes - 用户希望订阅的通知数组。
响应:
{"method": "subscribe"}例如:
{"params": {"hostname" : "192.168.247.131",
"port": "3000", "notification" :
["ScreenDestChanged", "AUXDestChanged"]},
"method":"subscribe", "id":"1234",
"jsonrpc":"2.0"}
unsubscribe
定义:
请求:
参数: {"hostname": hostname, "port":
port, "notification" : notificationType[]}
hostname - 要移除其订阅的主机名或 IP 地址。
port - TCP 端口。
notificationTypes - 用户希望订阅的通知数组。
响应:
{"method": "unsubscribe"}例如:
{"params": {"hostname" : "192.168.247.131",
"port": "3000", "notification" :
["ScreenDestChanged", "AUXDestChanged"]},
"method":"unsubscribe",
"id":"1234", "jsonrpc":"2.0"}