地平线智能计算盒参考方案常见问题
智能计算盒参考方案常见问题
视频播放问题
1. 拉取码流出错
rtsp.json
文件里面的url地址问题,注意检查url的用户名密码以及ip。
设备支持的连接数目达到最大限制,不再支持继续接入。 例如,某些设备rtsp的tcp方式最大支持一路,当前已使用tcp接入了一路,此时可修改rtsp.json对应通道的连接方式,将tcp修改为0,则会通过udp进行连接
2. 播放无画面
- 查看
display.json
文件里面vo的enable使能标志是否使能,若没有使能,则修改。
排查是否网络无视频流过来,可修改rtsp.json文件中对应某路的save_stream字段,改为1,则会自动保存接收到的码流。 修改配置后重新启动程序,保存的码流在当前部署包的目录下,可用第三方播放器vlc或potplayer等播放,看看码流是否正常
3. 播放马赛克、数据不正常、卡顿等问题
- 排查送入解码器的码流是否正常,是否丢数据,可修改rtsp.json文件中对应某路的save_stream字段,改为1,则会自动保存送入解码的码流。 修改配置后重新启动程序,保存的码流在当前部署包的目录下,可用第三方播放器vlc或potplayer等播放,看看码流是否正常
若步骤1接收到的码流就存在马赛克、丢数据的情况,可尝试修改rtsp.json文件中对应某路的frame_max_size大小。 此字段为内部接收rtsp帧最大buffer大小,目前默认是200k, 可适当改大,看保存码流是否还有丢数据的情况
若上述步骤之后,保存的码流还有问题,请排查网络过来的码流,可在H264Sink.cpp或者H265Sink.cpp的afterGettingFrame中添加代码将原始接收到的码流保存下来。 若原始的码流保存下来就丢失数据,排查网络或者rtsp发送接收问题
若步骤3中保存的原始rtsp接收到的码流没问题,检查接收之后之后H264Sink.cpp或者H265Sink.cpp中组帧的部分是否有问题
若保存送入解码器的码流无丢数据的情况,尝试修改display.json里面vo部分draw_real_time_video字段,改为true,排除不是所有帧都播放的问题
保证送入解码器的数据是正常的情况下,若出现增加分辨率后视频数据有问题,或播放有问题,可重点排查上述两个模块。
4. 播放延时
目前video box里面播放渲染部分采用opencv,并且为了各模块的独立性,使用了一些数据拷贝。 如果需要提高性能,建议优化此部分
解码
确保送入解码器的是完整的帧,如果是I帧,包含start code(0x00 00 00 01)、SPS、PPS数据头。
增加不同分辨率的适配
增加不同分辨率的适配,需要修改的位置主要有vps模块初始化部分,以及vo显示输出部分。
- VpsModule::Init函数,金字塔初始化部分代码
- DisplayInfo文件关于不同分辨率的播放计算
若出现增加分辨率后视频数据有问题,或播放有问题,可重点排查上述两个模块。
多路问题
默认ion buffer设置支持4路1080p,若要增加编码功能,或者增加路数的支持,为了确保稳定性,建议修改ion Buffer设置。 修改方法为 uboot 命令行下修改环境变量的,命令如下:
以配置 1GB ion 空间为例:
setenv ion_size '1024'
saveenv