最近在尝试用ffmpeg进行编解码 大部分的rtsp拉流正常 编解码正常
但是有的rtsp不能解码 提示如下 :
后来把把packet数据打印出来发现是没有sps pps信息 导致 ffmpeg不能正常解码
程序里面 经过测试 把 拉流时候的AVCodecContext 保存下来 即g_avc_cxt
然后解码的时候使用 avc_cxt = g_avc_cxt; 可以正常解码
但是如果直接 给extradata 赋值 发现 (程序中的if(0)里面的流程)
不能解码 还是提示一样的错误 不知道为什么
此方法不通 后来想了下 既然 裸流没有sps/pps信息 那我们自己把sps pps 手动加上去不就可以了吗
实际的过程即是:检测到I帧的时候 把sps pps 信息 拼接起来既可以 代码如下:
测试通过