注意:说明:
注意:会话连接诊断,用于远端设备诊断与指定现场设备会话连接的情况。当与现场设备会话连接出现问题时,可通过该功能定位会话链路问题。
一、诊断流程
注意:诊断前,需要先对目标设备发起会话连接,然后再对目标设备进行诊断,最后从诊断回调接口中获取诊断报告。诊断时间约为10秒。
二、步骤2:注册诊断回调接口
/** 回调注册函数* context 上下文指针,回调时会返回注册时传入的该指针,* callback 注册的回调函数,回调函数实现中请勿在回调线程长时间阻塞,若需要长时间处理建议转移到其他线程处理*/extern "C" TRRO_EXPORT void TRRO_registerOnDiagReport(void* context, TRRO_OnDiagReport * callback);
回调函数
/** #name : TRRO_OnDiagReport* @brief : 诊断信息回调* @input : context 回调上下文指针, 返回注册回调函数时传入的 context* gwid 发起诊断的目标现场设备 ID* type 1 成功 , < 0 相关错误信息 * json 回调诊断详细信息 json 格式* @return : void*/typedef void STD_CALL TRRO_OnDiagReport(void* context, const char* gwid, int type, const char* json);
三、步骤3:对设备会话进行诊断
调用 TRRO_connect 接口后,保持视频会话连接,通过调用诊断接口,等待从诊断回调函数中获取诊断报告。诊断时间为10秒左右。
/** @name : TRRO_DiagRequest* @brief : 需要主动出发,诊断网关、控制端当前状态输出报告* @input : gwid 目标设备 ID* @return : 成功1 失败 <= 0*/extern "C" TRRO_EXPORT int TRRO_diagRequest(const char* gwid);
| 参数 | 含义 |
| gwid | 目标现场设备 ID |
四、诊断说明
诊断输出报告为 json 格式字符串,包含现场设备和远端设备的 mqtt 服务状态、信令服务连接状态和媒体服务连接状态以及媒体链路状态等信息。
| JSON 字段 | 含义 | 正常值 | 异常值可能原因 |
| remote_mqtt_connect | 远端设备 mqtt 状态 | ok | 与 mqtt 服务网络或端口不通同名设备登录被阻塞 |
| diag_error | 诊断错误状态 | ok | 现场设备 mqtt 服务连接异常远端设备 mqtt 服务连接异常 |
| device_id | 现场设备 ID | — | — |
| remote_mode | 远端设备模式 | 与现场设备模式相同 | 现场设备与远端设备配置模式不一致 |
| result | 诊断详情 | JSON 数组,按视频流号排列 | 诊断失败,无法获取详情 |
| result / stream_id | 现场设备视频流 ID | — | — |
| result / conn_fd | 远端设备接收句柄 ID | — | — |
| result / field | 现场设备详情 | JSON 字符串 | 获取现场设备诊断信息失败 |
| result / field / signal_connect | 现场设备信令连接 | ok | 与信令服务网络或端口不通 |
| result / field / media_connect | 现场设备媒体连接 | ok | 媒体服务网络或端口不通现场设备未推流 |
| result / field / video_capture | 现场设备视频采集 | ok | 相机采集异常没有输入视频数据使用外部编码流输入 |
| result / field / video_encode | 现场设备视频解码 | ok | 编码失败编码器没有输入视频数据 |
| result / field / video_transfer | 现场设备视频发送 | ok | 没有进行推流媒体服务或信令服务连接出错 |
| result / field / lost | 现场设备视频发送丢包 | <1 | 现场设备网络发送有丢包 |
| result / field / fps | 现场设备视频发送帧率 | 与配置帧率相近 | 网络受限导致降帧cpu 或编码器处理能力不足相机或输入帧率不足 |
| result / field / bps | 现场设备视频发送码率 | 与配置码率范围相近 | 网络受限导致发送码率不足编码器没有输出或输出码率不足 |
| result / field / rtt | 现场设备网络延迟 | <100ms | 现场设备网络延迟过大 |
| result / remote | 远端设备详情 | JSON字符串 | — |
| result / remote / signal_connect | 远端设备信令连接 | ok | 与信令服务网络或端口不通 |
| result / remote / media_connect | 远端设备媒体连接 | ok | 媒体服务网络或端口不通现场设备未推流 |
| result / remote / video_transfer | 远端设备视频接收 | ok | 现场设备没有推流数据 |
| result / remote / video_decode | 远端设备视频解码 | ok | 没有解码数据解码失败 |
| result / remote / latency | 远端设备视频延迟 | 30 – 150 | 视频延迟异常 |
| result / remote / lost | 远端设备视频接收丢包 | <1 | 远端设备视频网络接收有丢包 |
| result / remote / fps | 远端设备视频接收帧率 | 与现场设备配置帧率相近 | 网络受限导致接收帧率不足现场设备实际发送帧率不足 |
| result / remote / bps | 远端设备视频接收码率 | 与现场设备发送码率相近 | 网络受限导致接收码率不足 |
| result / remote / rtt | 远端设备网络延迟 | <100ms | 远端设备网络延迟过大 |