level 5
福音🌀
楼主
附件里有两个H264流写成的文件,我使用FFmpeg解码并显示。
一个是这样:

一个I帧后接多个P帧。手动构建AVPacket,一个packet对应一个nal单元,传到avcodec_decode_video2后可以正常解码并显示:

另一个是这样:

两个I帧后接多个P帧。按照上面的方法手动构建packet并解码,会花屏,下半屏不对:

参考av_read_frame得到packet的结果(并没有细读里面的代码,有点复杂Orz),发现它是把两个I帧合成了一个AVPacket。调整代码,手动把两个I帧合成一个packet,再解码,可以正常显示。
现在的问题是,我得兼容多种格式,那么要怎么判断什么时候一个I帧什么时候两个或者多个呢?
附件(度盘码,发地址总把我当广告):
1geRNGAZ
qq3h
2016年12月21日 10点12分
1
一个是这样:

一个I帧后接多个P帧。手动构建AVPacket,一个packet对应一个nal单元,传到avcodec_decode_video2后可以正常解码并显示:
另一个是这样:
两个I帧后接多个P帧。按照上面的方法手动构建packet并解码,会花屏,下半屏不对:
参考av_read_frame得到packet的结果(并没有细读里面的代码,有点复杂Orz),发现它是把两个I帧合成了一个AVPacket。调整代码,手动把两个I帧合成一个packet,再解码,可以正常显示。现在的问题是,我得兼容多种格式,那么要怎么判断什么时候一个I帧什么时候两个或者多个呢?
附件(度盘码,发地址总把我当广告):
1geRNGAZ
qq3h