首页 > 技术知识 > 正文

背景: 在项目中有16个vpss通道数据需要进行截图,截图编码通道就1个,所以需要遍历绑定vpss到venc,这16个vpss通道中有模拟相机的数据和数字相机的数据。其中模拟相机的vpss能正常的绑定到venc并进行正确的编码,但是数字相机的vpss绑定到venc就有大量的报错,错误信息如下:

<3>[ venc] [Func]:VencCheckVideoInfo [Line]:1462 [Info]:<3>[ venc] Venc 17 : VencCheckVideoInfo VencCheckTimeRef err. <3>[ venc] [Func]:VencCheckVpssSendInfo [Line]:1525 [Info]:<3>[ venc] Venc 17 : Sendinfo pic info err. <3>[ venc] [Func]:VencCheckTimeRef [Line]:3399 [Info]:<3>[ venc] Current timeref(0x14a2) is not larger than GrpTimeRef(0x1564) <3>[ venc] [Func]:VencCheckVideoInfo [Line]:1462 [Info]:<3>[ venc] Venc 17 : VencCheckVideoInfo VencCheckTimeRef err. <3>[ venc] [Func]:VencCheckVpssSendInfo [Line]:1525 [Info]:<3>[ venc] Venc 17 : Sendinfo pic info err. <3>[ venc] [Func]:VencCheckTimeRef [Line]:3399 [Info]:<3>[ venc] Current timeref(0x14a4) is not larger than GrpTimeRef(0x1564) <3>[ venc] [Func]:VencCheckVideoInfo [Line]:1462 [Info]:<3>[ venc] Venc 17 : VencCheckVideoInfo VencCheckTimeRef err. <3>[ venc] [Func]:VencCheckVpssSendInfo [Line]:1525 [Info]:<3>[ venc] Venc 17 : Sendinfo pic info err. <3>[ venc] [Func]:VencCheckTimeRef [Line]:3399 [Info]:<3>[ venc] Current timeref(0x14a6) is not larger than GrpTimeRef(0x1564)

分析: 通过报错信息的字面意思可以分析出,vpss通道的基准时钟参考大于venc的基准时钟,但是根据经验,只有手动get vpss 通道的数据,然后send到venc 时才需要手动的累积基准时钟,动态绑定时不需要的,查了各种原因也试了很多方法还是不行。

解决: 翻看手册查看api,发现只需要在HI_MPI_VENC_StartRecvPicEx 之前进行HI_MPI_VENC_ResetChn就可以顺利解决了,获得编码数据后正常HI_MPI_VENC_StopRecvPic即可。

猜你喜欢