我的ffmpeg库存在重大问题
首先,时间戳以某种随机顺序到达。
例如,在解压缩时,时间戳8000在4000之前,依此类推。如果我忽略这些时间戳并只播放视频,我可以看到帧实际上是以随机顺序到达的。那么,第一个问题是如何处理?这是正常的吗?我真的不明白这是怎么可能的。
问题nubmer two ..
图片质量太差了。看起来它需要抗锯齿。
VLC播放相同的剪辑,具有适当的帧顺序和更好的画质。
我的应用程序中的颜色格式是标准的YV12(解压后我没有转换它),它是由Video Mixing Renderer 9过滤器渲染的。 (我没有使用ffmpeg作为DirectShow过滤器。)
(ffmpeg是如此糟糕,还是我必须开发一些额外的技能才能获得它的框架?)
答案 0 :(得分:1)
我认为时间戳的问题在于,当视频包含B帧(双向预测)时,帧会在其显示顺序之外的比特流中出现。因此,在确定解码帧的PTS时必须特别小心。看看this page of a good ffmpeg tutorial,看看他们是如何处理这个问题的。
基本上,您需要为每个解码帧存储第一个数据包的PTS值。解码后AVFrame结构中的PTS值无效。
至于质量问题,这可能与时间戳问题有关,也可能没有,但我可以向你保证,问题几乎绝对不是ffmpeg库本身,因为它们被广泛使用,甚至可能被用作解码视频时由VLC后端。
我会查看the tutorial并实现完全相同的事情,看看是否可以让它工作,然后修改教程代码以满足您的需求。