FFmpeg avcodec_send_packet函数错误定位

场景
avcodec_send_packet函数返回-1094995529错误,根据FFmpeg的错误信息,得知为AVERROR_INVALIDDATA,这个时候,由于已经接收到I帧,实际上是可以解码的,难道是因为解码器的内部缓冲区需要被填满,才会返回一帧图像,导致需要等待3秒钟,才能够出来图像

通过日志分析问题
使用av_log_set_callback函数设置av_log日志输出到文件,定位到问题
I:2017-12-29 09:52:41 ms:903:nal_unit_type: 1, nal_ref_idc: 3
I:2017-12-29 09:52:41 ms:941:nal_unit_type: 1, nal_ref_idc: 3
I:2017-12-29 09:52:41 ms:942:non-existing PPS 0 referenced
I:2017-12-29 09:52:41 ms:943:decode_slice_header error
I:2017-12-29 09:52:41 ms:943:no frame!

解决
回放的是PS流,由于没有调用av_find_stream_info函数,所以在调用avcodec_send_packet函数的时候,会去探测PPS和SPS
的相关参数,所以需要几秒去探测属性



     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/2046171,如需转载请自行联系原作者



上一篇:iOS 获取系统wifi列表,wifi信号强度,并给wifi设置密码,标签(副标题)


下一篇:Apache Spark 3.0 将内置支持 GPU 调度