微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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也发生错误,说明性能确实到了上限了,否则说明应用本身还有优化的空间。

原文地址:https://www.jb51.cc/wenti/3285805.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐