SOPHON SDK错误提示与VPU相关问题汇总

1.SOPHON SDK错误提示信息”VPU_DecRegisterFrameBuffer failed Error code is 0x3”, 然后提示Allocate Frame Buffer内存失败

这个提示信息表示:分配的解码器缓存帧个数,超过了最大允许的解码帧。导致这个问题的原因有可能是:

  1. 不支持的视频编码格式,比如场格式,此时可以用 Sophon SDK解码视频流的常见调试方法 中的方法,把码流数据录下来,提交给我们分析。
  2. 设置了过大的extra_frame_buffer_num。理论上,extra_frame_buffer_num不能超过15,超过了以后就有可能不能满足标准所需的最大缓存帧数。因为大部分编码码流并没有用到最大值,所以extra_frame_buffer_num大于15的时候,对大部分码流仍然是可以工作的。

目前发现可能导致这个问题的原因有上述两种,后续有新的案例继续增补

2.SOPHON SDK程序提示“VPU_DecGetOutputInfo decode fail framdIdx xxx error(0x00000000) reason(0x00400000), reasonExt(0x00000000)”可能是什么问题(reason的具体数值可能不同)

这个提示通常是由码流错误造成的,提示的含义是第xxx帧解码错误,错误原因为….。这里具体原因对于上层应用来说,不用关心,只需知道这是由码流错误导致的即可。

进一步分析,导致码流错误的原因通常可以分为两类,我们要有针对的进行处理。因为一旦频繁出现这种提示,说明解码出来的数据是不正确的,这时候有可能是各种马赛克或者图像花,对于后续的处理会造成各种异常情况,所以我们必须尽量减少这种情况的发生。

  1. 网络情况导致的丢包。这时候可以用我们的测试程序vidmulti验证下,如果vidmulti没有解码错误,那么可以排除这种情况。如果确认网络丢包的话,要分辨下是否网络带宽本身就不够,如果本身带宽不够,那没有办法,只能降低视频码流的码率。如果带宽是够的,要检查下网线。当码流连接数超过20多路的时候,这时候有可能已经超出百兆了,这时网线也必须换到CAT6,与千兆网相匹配
  2. 解码性能达到上限造成丢包。这种情况发生在流媒体环境中,对于文件播放是不会发生的。这时也可以用我们的vidmulti跑一下,作为比较。如果vidmulti也发生错误,说明性能确实到了上限了,否则说明应用本身还有优化的空间。

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...