我正在开发一个使用libav处理视频的应用程序。最近,我们注意到使用av_read_frame
和av_decode_video2
读取视频时实际上实际上跳过了某些帧。
经过一些研究,我认为问题在于视频正在使用双向预测帧(B帧)。我在Github issue和libav mailing list中找到了对该问题的引用。第一个参考资料说,我需要调用av_decode_frame()
直到got_frames为零;我试过了,但是got_frames立即返回零。第二个参考资料说:
您需要发送刷新数据包(数据/大小设置为0)以获取最后一个 框架
我不确定这是什么意思。 有人可以向我解释如何获取被跳过的数据包吗?