有奖:语音产品征文挑战赛火热进行中> HOT
说明:
会话连接诊断,用于远端设备诊断与指定现场设备会话连接的情况。当与现场设备会话连接出现问题时,可通过该功能定位会话链路问题。

诊断流程

注意:
诊断前,需要先对目标设备发起会话连接,然后再对目标设备进行诊断,最后从诊断回调接口中获取诊断报告。诊断时间约为10秒。

步骤1:发起设备会话连接

调用远端设备 SDK 的 connect 接口,对指定现场设备视频进行会话连接。
/*
* @name : TRRO_connect
* @brief : 发起视频连接,可多次调用连接不同流,异步模式,根据 onState 状态回调确认视频连接成功
* @input : gwid 目标连接的现场设备 ID
* record_config:
* 优先使用录制配置,当默认录制配置命名规则无法满足需求时使用,json 字符串,需要对每一路进行配置 eg:"{\\"file_names\\": [{\\"file\\":\\"test\\", \\"duration\\":15}, {\\"file\\":\\"test01\\", \\"duration\\":15}]}" ps:file 文件名 duration 分片时长单位秒
* streams_num 要拉取现场设备视频流的个数, 与conn_fds和streams_num数组长度匹配, 值的范围 1 到 现场设备支持的device_streams数量
* streams_id 现场设备视频流的 ID 数组, 现场设备视频流 ID 从0开始, 最大值为现场设备支持的 device_streams数量 -1
* conn_fds conn_fd数组,conn_fd为接收视频流的句柄标识,自行编号,取值从0开始,最大值为 max_streams -1,max_streams在远端设备配置文件配置
* @return : 成功 1 失败 <= 0
*/
int TRRO_connect(const char* gwid, const char* record_config, int streams_num, int* streams_id, int* conn_fds);

步骤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
远端设备网络延迟过大
?


http://www.vxiaotou.com