Qt+ffmpeg仿格式工厂:编程中遇到的问题(二)

来源:互联网 发布:爱在记忆中找你知乎 编辑:程序博客网 时间:2024/05/23 16:54

关于对错误pts () < dts () in stream的解决方法。出现这种错误是由于视频pts大于dts。pts是视频播放时间,dts是送入解码器解码时间。所以一帧视频播放时间必须在解码时间点之后。解决方法是进行判断:if(packet.pts < packet.dts) continue;把异常的帧简单跳过,异常帧只是极少数简单跳过不会有什么影响。

产生错误的原因一般是对dts,pts操作不当。比如在进行视频分割时,常用的方法是视频截取后半段视频pts与dts减去前半段pts和dts。前半段pts可能比dts大(当解码的视频帧不是I帧时)后半段刚开始视频pts和dts刚好相等(当前帧为I帧时),两个一相减就会出现dts小于pts的情况。

原创粉丝点击