说明:
建议先了解基础概念,再根据指引开始进行 Demo 体验和 SDK 开发集成。
基础概念
名词 | 说明 |
现场设备 | 在作业现场需要被监控或操控的设备, 常见如机器人、车辆、工程机械、无人机等,主要作为视频推流端。 |
远端设备 | 在远端对现场设备进行操控或者视频观看的设备, 常见如电脑、驾驶舱、手机、平板、VR等,主要作为视频观看端。 |
会话权限 | 远端设备与现场设备建立会话的权限。拥有会话权限的远端设备可查看现场设备在线状态、订阅现场设备音频和视频、收取现场设备消息等。 |
控制权限 | 远端设备对现场设备下发控制消息/音频数据的权限。一个现场设备同时只能授予一个远端设备控制权限(master 权限),但可授予多个远端设备观看权限(guest 权限)。 |
项目 ID | 项目标识。一个账号可创建不同项目进行管理,彼此间设备隔离。每个项目可单独查看总用量和会话统计数据。 |
设备 ID | 项目下的设备标识,项目下唯一。与项目ID可共同构成全局唯一设备ID,projectID/deviceID。 |
设备密码 | |
配置 JSON | |
视频流 ID | 现场设备下的视频流标识,以0开始编号,与配置 JSON 中 streams_config 数组元素编号一致,最大值为设备总流数(device_streams)-1。 |
视频流接收句柄 | |
按需推流 | 现场设备默认按需推流,即有远端设备订阅时才会推送视频流。计费也是按实际远端设备订阅会话时长进行计费。如需强制推流可通过配置开启。 |
视频接入授权 | 预付费包月时长包,可绑定现场设备。观看对应现场设备视频流的会话时长消耗,都会从绑定时长包中扣减。如果未绑定时长包但开启了后付费,则会按对应用量直接从腾讯云账号按日扣减。 |
强制登录 | 同一时间,同一个设备 ID 只能有一个客户端登录。默认后登录客户端会被阻止登录。如果打开强制登录(配置 force_login 为1),后登录客户端会踢除之前登录的客户端。 |
SDK 证书 | SDK 包中 device.pem 证书文件,配置 JSON 会通过 certificate 配置加载该证书文件路径。如果证书文件路径错误或系统时间超出证书有效期范围,可能导致无法连接云服务器。 |
快速体验 Demo
1. 完成业务开通和试用授权申请。
2. 完成项目创建、现场设备创建和远端设备创建。
3. 下载对应平台 Demo。
4. 绑定试用视频接入授权到现场设备。
5. 生成配置 JSON,完成配置文件。
6. 运行 Demo 进行体验。
查看视频指标
端到端视频指标
视频延迟:从现场设备到远端设备的视频传输延迟(含编解码)。
视频卡顿率:远端设备观看的视频卡顿率。100ms/150ms卡顿率为卡顿时长超过100ms/150ms的视频卡顿率。高于常规实时音视频200/300ms门限。
现场设备网络指标
网络 rtt:现场设备到就近接入服务器的网络回环延迟。
网络 lost:现场设备到服务器网络丢包率。
远端设备网络指标
网络 rtt:远端设备到就近接入服务器的网络回环延迟。
网络 lost:远端设备到服务器网络丢包率。
现场设备视频传输指标
视频 fps:现场设备推流到服务器的视频传输帧率。
视频 rate: 现场设备推流到服务器的视频传输码率。
带宽估计:SDK 估计的现场设备到服务器网络带宽,上限以视频流期望码率之和最大范围估计。
调控码率:SDK 建议的视频流传输码率,其值为 min(视频流分配带宽,视频流期望码率)。
远端设备视频传输指标
视频 fps:远端设备从服务器接收的视频传输帧率
视频 rate: 远端设备从服务器接收的视频传输码率
其他指标
现场设备编码耗时:SDK 进行编码时,单帧编码耗时,通常在20ms以内,典型值约10ms。
远端设备解码耗时:SDK 进行解码时,单帧解码耗时,通常在20ms以内, 典型值约10ms。
指标优化建议
国内视频延迟指标通常小于100ms。现场设备网络(蜂窝) rtt 通常小于50-60ms,远端设备网络(WiFi) rtt 通常小于30-40ms。可参考该典型值进行优化。
当发现设备网络 rtt 过大,但丢包和带宽估计值正常时:建议优化网络路径,现场设备查看 SIM 卡出口,远端设备优化 Wi-Fi 接入等。
当发现带宽估计值正常,现场设备视频传输码率低于建议码率,但网络仍存在较明显固定丢包时:建议优化网络设备,使用较好的 Wi-Fi 路由器或用手机热点测试。
SDK 开发集成
现场设备 SDK 开发
基础流程:SDK API 调用流程
API 文档:C/C++ 现场设备 SDK API
示例代码:
集成事项:
视频流对接:SDK 使用视频流托管模式,仅需应用输入视频流数据或配置视频流采集相机。SDK 会自动进行按需推流和断网恢复。
控制流对接:SDK 在现场设备和远端设备间使用二进制透传,应用自行定义传输数据格式,可参考 控制数据传输 对接,需要注意监控延迟回调和接收消息间隔,进行网络异常降级保护。
配置管理:根据 现场设备配置说明 在配置中配置相关功能以及 device.pem 证书和日志路径,建议使用绝对路径。
进阶注意:
回调状态监听
参数 | 说明 |
onSignalState | 必监听,用于查看初始化阶段和后续设备与远端服务的连接状态。 |
onState | 建议监听,用于查看视频流连接状态。当现场设备进行推流时,该状态为已连接。 |
onMediaState | 建议监控,用于查看视频流传输状态和网络情况。 |
onEncodeFrameInfo | 使用外部输入编码流时建议监听,用于指导输入编码流的码率和I帧刷新。 |
onOperationPermissionRequest | 使用自定义控制权限管理时必监听,用于接收远端设备控制权限请求。 |
onErrorEvent | SDK 底层错误或告警信息提示。 |
onLatencyReport | 使用控制流时必监听,用于查看远控延迟,便于业务进行降级保护。 |
视频流输入
V4L2 相机采集: protocol 为 v4l2。
RTSP 相机采集:编码流透传时 protocol 为 rtsp_enc, 转码后传输 protocol 为 normal,详细参见 网络摄像机接入。
外部输入视频图像:protocol 为 outside,调用 TRRO_externalVideoData 接口输入,支持 I420, YUYV, UYVY, NV12, JPEG, RGB 等多种格式,详见头文件。
外部输入视频流编码数据:protocol 为 outenc,调用TRRO_externalEncodeVideoData接口输入,支持 H264/H265输入,关键帧中需带有SPS/PPS 信息。
编码流配置:您可查看 视频流编码配置 文档进行配置。
物联网白名单配置:您可查看 物联网卡白名单配置 文档进行配置。
多网络路径传输配置:您可查看 多网络路径传输 文档进行配置。
语音使用:您可查看 语音对讲 使用语音。
远端设备 SDK 开发
基础流程:SDK API 调用流程
API 文档:
iOS API
示例代码:
C/C++ 示例
iOS 示例
鸿蒙示例
Unity 示例
Java 示例
Web 示例
集成事项:
视频流拉取:SDK 封装了拉流 API,调用 connect 即可获取指定现场设备指定 ID 的视频流;SDK 会自动维持端到端拉流状态和断网恢复。
视频流渲染:SDK 提供内置渲染功能以及外部渲染示例代码,可根据需要选取内部渲染或外部渲染。
控制流对接:SDK 在现场设备和远端设备间使用二进制透传,应用自行定义传输数据格式。
在线状态管理:通过 TRRO_getGwList 或 TRRO_getGwInfo 查看现场设备在线情况。
延迟监测:一般建议在现场设备做延迟异常的降级处理。远端设备可根据延迟情况给用户进行操作提示。
进阶注意:
回调状态监听:
参数 | 说明 |
onSignalState | 必监听,用于查看初始化阶段和后续设备与远端服务的连接状态。 |
onState | 必监听,用于查看视频流接收句柄与服务端视频连接状态是否建立。 |
onMediaState | 建议监听,用于查看远端设备拉流与服务器的视频流传输状态和网络情况。 |
onFieldSideMediaState | 建议监听,用于查看现场设备推流与服务器的视频流传输状态和网络情况。 |
OnOperationPermissionState | 使用应用控制授权时必监听,用于接收现场设备的控制权限通知。 |
onAllLatencyReport | 建议监听,用于查看现场设备到远端设备端到端视频流和控制数据流延迟指标。 |
onErrorEvent | 建议监听,SDK 底层错误或告警信息提示。 |
onRemoteFrame | 外部渲染必监听,用于接收解码后的原始图像。 |
onRemoteEncodedFrame |
视频流输出:
SDK 渲染:通过 TRRO_connectField 和 TRRO_setWindows 接口将视频流关联接收句柄和渲染窗口。内部渲染支持夜视增强、超分等处理,详细可参见 TRRO_SetRenderConfig。
外部渲染:通过 onRemoteFrame 获取解码后原始图像进行渲染。
本地录制:配置中开启 "file_path" 配置录制目录。
视频转推:通过 TRRO_startMediaPush 接口进行视频流转推。
现场设备编码配置更新:您可查看 TRRO_fieldDeviceEncodeConfig 文档进行配置。
会话连接诊断:您可查看 会话连接诊断 文档进行操作。
语音对接:您可查看 语音对讲 文档进行接入。
视频流观看与切流:您可查看 视频观看与切流 文档进行操作。
控制授权管理:您可查看 控制授权管理 文档进行管理。
云端开发
API 文档:服务端 API 文档
集成事项:
项目创建:可提前手动创建项目,或通过创建项目接口。
设备注册、密钥更新与会话权限管理:可参考 配置与密钥管理 两种方式进行管理:
免注册与项目共享密钥方式:通过设置项目共享密钥,生成设备每次登录的token,并通过临时授权码管理会话权限。详细参见 免注册登录与临时会话授权。
云端录制与转推:设置 云端录制与转推回调接口,调用 开启云端录制 或 云端转推。