Module name: decoder/discovery
Basic URL: /api/v1/decoder/discovery/
注意:本模块的APIs仅当设备工作于Decoder模式下才有效。
文章目录
获取网络中发现的NDI Sources
API URL
**/api/v1/decoder/discovery/get**
Request
Method: **GET/POST**
Parameter | Value | 说明 |
---|---|---|
force | [ANY], Optional | 如果您指定了Force参数,无论它是什么值,代表要求NDI Device强制重新扫描网络。 |
Response
Example:
{
"result": "ok",
"data": [
{
"group": "public",
"name": "Spark_IO-1916001002 (Channel 1)",
"device_name": "Spark_IO-1916001002",
"channel_name": "Channel 1",
"url": "192.168.100.168:5961"
},
/* ... Each discovered items in the array ... */
],
"data_size": 10
}
Data字段说明:
"data"是一个JSON数组,"data_size"是一个辅助描述"data"数组大小的字段(也许你用不上它)。
数组中的每一个item代表一个网络中发现的NDI Source:
Field | Value | 说明 |
---|---|---|
group | [STRING] | NDI Source所在的NDI Group。如果您得到的Group是空字符串"",按照NDI的规则,它表示默认public group。 |
name | [STRING] | NDI Source Name。这是NDI Source原始的名称。如果您想获得设备名称、通道名称,请参考 device_name 和 channel_name。 |
device_name | [STRING] | 从 name 中解析出来的NDI Device Name,通常它也代表了NDI Source的host name。 |
channel_name | [STRING] | 从 name 中解析出来的NDI Channel Name |
url | [STRING] | NDI Source URL。请注意:目前URL的格式为 \<IP>:\<port>,但是建议您不要认为它就是事实,NDI SDK并不担保这一点。在使用时,请保留url的原始值,不要尝试改变它。 |
TIPS:
A. NDI Discovery基于mDNS机制,在默认情况下,它只能发现与NDI Device在同一子网之内的NDI Sources。
B. 考虑到您的网络中可能存在大量的NDI Sources,由于NDI Discovery的速度不如您想象的那么快,所以NDI Device会cache之前发现的sources,并尽可能快地把结果返回给您。与此同时,NDI Device会持续在后台扫描并更新cache。所以,您得到的结果或许不完全是最新的(但是绝大多数情况下是)。您可以通过周期性地调用这个API来获得更新。
手动发现:指定IP和/或NDI Groups
大多数时候,我们可以通过网络自动发现NDI Sources。但有一些特殊情况:
- NDI自动发现无法发现不在同一Subnet之内的NDI Sources;
- NDI有逻辑分组,默认情况下,NDI自动发现只发现NDI分组为public的设备;
- 其它因为网络策略而限制了网络组播(Multicast)的情况。
在这些情况下,我们可能需要手动指定NDI发现的目标IP地址和/或NDI Groups。
API URL
**/api/v1/decoder/discovery/set_manual_targets**
Request
Method: **POST** (请注意
本API只能使用POST方法,且提交的参数需要使用JSON格式)
Parameters (example):
{
"ip": ["192.168.100.3", "172.16.10.5" /*, ...*/],
"group_name": ["public", "private_group", "my-group" /*,...*/]
}
参数 | Value | 说明 |
---|---|---|
ip | [ARRAY(STRING)] , Optional | 通过数组的方式,指定一个或多个手动发现NDI Sources的目标IP地址。指定的IP地址可以与当前NDI Device不在同一Subnet之中。 该参数可选。如果没有指定,将清除之前指定的Manual IPs。 |
group_name | [ARRAY(STRING)] , Optional | 通过数组的方式,指定一个或多个手动发现NDI Sources的NDI Group Names。 该参数可选。如果没有指定,将清除之前指定的Group Names。 |
请注意:
A) 您手动指定的IP和NDI Groups将会被设备记录和保存。因此,即使是您重新启动了设备,这些手动指定的IP和NDI Groups都会起作用。
B) 手动指定IP和NDI Groups,不会影响自动发现功能。因此,在发现结果列表中,您将看到所有自动发现的NDI Sources以及手动指定的Sources(如果目标存在的话)。
C) 如参数说明中所提示的,如果您不指定 "ip" 或 "group_name",意味着它会清除之前的设置。如果您需要保留之前的设置,请务必将原先的值作为参数传递。您可以通过 API /api/v1/decoder/discovery/get_manual_targets 获取之前设置的值 。
Response
Example:
{
"result": "ok"
}
如果设置成功,将返回 result = "ok" 的消息;否则请参见 HTTP响应和错误处理 的标准错误消息描述。
5.3 获得指定的手动发现IP和NDI Groups
API URL
**/api/v1/decoder/discovery/get_manual_targets**
Request
Method: **GET/POST**
Parameter: NONE
Response
Example:
{
"result": "ok",
"data": {
"ip": ["192.168.100.3", "172.16.10.5" /*, ...*/],
"group_name": ["public", "private_group", "my-group" /*,...*/]
}
}
Data字段说明:
Field | Value | 说明 |
---|---|---|
ip | [ARRAY(STRING)] | 通过数组返回所有手动指定的IP地址列表。 |
group_name | [ARRAY(STRING)] | 通过数组返回所有手动指定的NDI Groups。 |