直播功能
State
直播能力更新
Topic: thing/product/{device_sn}/state
Direction: up
Data:
| Column | Name | Type | constraint | Description |
|---|---|---|---|---|
| live_capacity | 直播能力 | struct | 网关设备直播能力信息 | |
| »available_video_number | 可用于直播的视频流总数 | int | {} | 表明无人机或设备所拥有的所有可用于直播视频流的总数 |
| »coexist_video_number_max | 可同时进行直播的最大视频流总数 | int | {} | 可同时推流的最大码流数量 |
| »device_list | 子设备列表 | array | {} | 可选择的视频设备源列表 |
| »»[array_item] | Elements in array | struct | {} | {"size": "2"} |
| »»»sn | 设备序列号 | text | {"length":"10240"} | 视频源设备序列号 |
| »»»available_video_number | 可用于直播的视频流总数 | int | {} | 表明无人机或设备所拥有的所有可用于直播视频流的总数 |
| »»»coexist_video_number_max | 可同时进行直播的最大视频流总数 | int | {} | 该设备可同时推流的最大码流数 |
| »»»camera_list | 该设备上的相机列表 | array | {"item":{"type":"struct","specs":[{"identifier":"camera_index","name":"相机索引,由类型枚举值和云台位置编号组成","dataType":{"type":"text","specs":{"length":"24"}}},{"identifier":"available_video_number","name":"可用于直播的视频流总数","desc":"表明该相机可用于直播视频流的总数","dataType":{"type":"int","specs":{}}},{"identifier":"coexist_video_number_max","name":"该相机可同时进行直播的最大视频流总数","dataType":{"type":"int","specs":{}}},{"identifier":"video_list","name":"视频流列表","dataType":{"type":"array","specs":{"item":{"type":"struct","specs":[{"identifier":"video_index","name":"视频索引","dataType":{"type":"text","specs":{"length":"24"}}},{"identifier":"video_type","name":"视频类型","desc":"表明视频镜头的类型,如normal/wide/zoom/ir等","dataType":{"type":"text","specs":{"length":"24"}}},{"identifier":"switchable_video_types","name":"该视频流支持切换的视频镜头类型列表:normal/wide/zoom/ir","dataType":{"type":"array","specs":{"type":"text","length":"24"}}}]}}}}]}} | 该设备上的相机列表 |
| »»»»[array_item] | Elements in array | struct | {} | 相机信息结构体 |
| »»»»available_video_number | 当前相机可用直播视频数量 | int | 该相机可用于直播的视频流数量 | |
| »»»»camera_index | 相机索引 | text | 使用 {type-subtype-gimbalindex} 的格式。机巢摄像头:10165-0-0 为巢内摄像头,10165-0-1 为巢外摄像头 | |
| »»»»coexist_video_number_max | 可同时直播的视频数量 | int | 该相机可同时推流的最大码流数 | |
| »»»»video_list | 镜头列表 | array | 该相机的视频流列表 | |
| »»»»»[array_item] | Elements in array | struct | {} | 视频流信息结构体 |
| »»»»»switchable_video_types | 镜头类型 | string_array | eg:["normal", "ir", "wide", "zoom"] 根据相机支持的镜头上报 | 该视频流支持切换的镜头类型列表 |
| »»»»»video_index | 镜头序号 | text | 视频流索引编号 | |
| »»»»»video_type | 镜头类型 | text | 当前使用的镜头类型 | |
| »»»»lens_range_info | 变焦范围 | array | 该相机的变焦范围信息列表 | |
| »»»»»[array_item] | Elements in array | struct | {} | 变焦范围结构体 |
| »»»»»len_type | 镜头类型 | text | 镜头类型标识 | |
| »»»»»step | 变焦最小单位 | float | 变焦调节最小步长 | |
| »»»»»max | 最大变焦倍数 | double | 最大变焦倍数,变焦镜头默认 160.0 | |
| »»»»»min | 最小变焦倍数 | double | 最小变焦倍数,变焦镜头默认 1.0 |
Example:
{
"bid": "8d872647-fca0-478a-96b5-082a7178fc91",
"data": {
"live_capacity": {
"available_video_number": 1,
"coexist_video_number_max": 1,
"device_list": [
{
"available_video_number": 1,
"camera_list": [
{
"available_video_number": 1,
"camera_index": "10165-0-0",
"coexist_video_number_max": 1,
"video_list": [
{
"switchable_video_types": [
"normal"
],
"video_index": "normal-0",
"video_type": "normal"
}
]
}
],
"coexist_video_number_max": 1,
"sn": "NM1924481004"
},
{
"available_video_number": 1,
"camera_list": [
{
"available_video_number": 1,
"camera_index": "10802-0-0",
"coexist_video_number_max": 1,
"lens_range_info": [
{
"len_type": "ir",
"max": 16.0,
"min": 1.0,
"step": 0.1
},
{
"len_type": "zoom",
"max": 160.0,
"min": 1.0,
"step": 0.1
}
],
"video_list": [
{
"switchable_video_types": [
"ir",
"zoom"
],
"video_index": "normal-0",
"video_type": "zoom"
}
]
}
],
"coexist_video_number_max": 1,
"sn": "1748FEV3HMF924411033"
}
]
}
},
"gateway": "NM1924481004",
"tid": "5f8b887f-7e10-4e7a-ab3d-3bde706d7cb9",
"timestamp": 1741850159800
}
Service
开始直播
Topic: thing/product/{gateway_sn}/services
Direction: down
Method: live_start_push
Data:
| Column | Name | Type | constraint | Description |
|---|---|---|---|---|
| url_type | 直播协议类型 | enum | {"0":"Agora","1":"RTMP","2":"RTSP","3":"GB28181","4":"WHIP","101":"4G_RTMP"} | 推流协议类型 |
| url | 直播参数 | text | {} | RTMP: (rtmp://xxxxxxx)示例:rtmp://live.example.com:1935/live |
| video_id | 直播视频流的ID编号 | text | {} | 格式为 #{device_sn}/#{camera_index}/#{video_index};设备SN号/相机索引/镜头索引 比如机巢推流ID"NM1924481004/10165-0-0/normal-0", 无人机推流ID "1748FEV3HMA923171787/10802-0-0/normal-0" 设备会对下发的地址中 camera_index 进行校验,camera_index 需要从直播能力集中的 camera_index获取 |
| video_quality | 直播质量 | enum | {"2":"标清","3":"高清"} | 标清:1280 * 720,高清:1920 * 1080 |
| video_type | 直播镜头 | text | {"normal","wide","zoom","ir","thermal","NightVision"} | 不同的镜头类型,比如普通/广角/变焦/红外/热成像/夜视 |
| intranet_url | 内网地址 | text | 内网服务器地址。当前固件暂未支持。 | |
| external_url | 外网地址 | text | 外网服务器地址,可以和 intranet_url 一样。当前固件暂未支持。 | |
| token | 鉴权字符串 | text | 鉴权字符串。当前固件暂未支持。 |
Example:
{
"timestamp": 1711022516332,
"data": {
"url": "rtmp://test-mediacenter.autelrobotics.cn:1936/live/1748FEV3HMA923171787/10802-0-0/normal-0",
"url_type": 1,
"video_id": "1748FEV3HMA923171787/10802-0-0/normal-0",
"video_quality": 3,
"video_type": "zoom"
},
"method": "live_start_push",
"tid": "b92a6aa1-96eb-4b4a-848f-c0f63f206d3b",
"bid": "74008969-0d46-4f69-9a03-78423824fe24",
"gateway": "TH7923221094"
}
Topic: thing/product/{gateway_sn}/services_reply
Direction: up
Method: live_start_push
Data:
Example:
\{
"bid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"tid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"timestamp": 1654070968655,
"method": "live_start_push",
"data": \{
"result": 0
\}
\}
停止直播
Topic: thing/product/{gateway_sn}/services
Direction: down
Method: live_stop_push
Data:
| Column | Name | Type | constraint | Description |
|---|---|---|---|---|
| video_id | 直播视频流的ID编号(可选) | text | {} | 格式为 #{device_sn}/#{camera_index}/#{video_index};设备SN号/相机索引/镜头索引 比如机巢推流ID"NM1924481004/10165-0-0/normal-0", 无人机推流ID "1748FEV3HMA923171787/10802-0-0/normal-0" 为空时停止全部推流 |
Example:
{
"bid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"tid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"timestamp": 1654070968655,
"method": "live_stop_push",
"data": {
"video_id": "1748FEV3HMA923171787/10802-0-0/normal-0"
}
}
Topic: thing/product/{gateway_sn}/services_reply
Direction: up
Method: live_stop_push
Data: null
Example:
\{
"bid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"tid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"timestamp": 1654070968655,
"method": "live_stop_push",
"data": \{
"result": 0
\}
\}
设置直播清晰度
Topic: thing/product/{gateway_sn}/services
Direction: down
Method: live_set_quality
Data:
| Column | Name | Type | constraint | Description |
|---|---|---|---|---|
| video_id | 直播视频流的ID | text | {} | 格式为 #{device_sn}/#{camera_index}/#{video_index};设备SN号/相机索引/镜头索引 |
| video_quality | 直播质量 | enum | {"2":"标清","3":"高清"} | 标清:1280 * 720,高清:1920 * 1080 |
Example:
\{
"bid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"tid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"timestamp": 1654070968655,
"method": "live_set_quality",
"data": \{
"video_id": "1ZNDH1D0010098/39-0-7/normal-0",
"video_quality": 3
\}
\}
Topic: thing/product/{gateway_sn}/services_reply
Direction: up
Method: live_set_quality
Data: null
Example:
\{
"bid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"tid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"timestamp": 1654070968655,
"method": "live_set_quality",
"data": \{
"result": 0
\}
\}
设置直播镜头
Topic: thing/product/{gateway_sn}/services
Direction: down
Method: live_lens_change
Data:
| Column | Name | Type | constraint | Description |
|---|---|---|---|---|
| video_id | 直播视频流的ID | text | {} | 格式为 #{device_sn}/#{camera_index}/#{video_index};设备SN号/相机索引/镜头索引 |
| video_type | 直播视频流镜头类型 | enum | {"normal":"默认","wide":"广角","zoom":"变焦","ir":"红外","thermal":"热成像","NightVision":"夜视"} | 视频镜头类型 |
Example:
\{
"bid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"tid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"timestamp": 1654070968655,
"method": "live_lens_change",
"data": \{
"video_id": "1581F5BMD228Q00A82XX/39-0-7/zoom-0",
"video_type": "zoom"
\}
\}
Topic: thing/product/{gateway_sn}/services_reply
Direction: up
Method: live_lens_change
Data: null
Example:
\{
"bid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"tid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"timestamp": 1654070968655,
"method": "live_lens_change",
"data": \{
"result": 0
\}
\}