Application provided invalid, non monotonically increasing dts to muxer in stream 240>40的解决方案

3 篇文章 0 订阅

c++调用ffmpeg报错

Application provided invalid, non monotonically increasing dts to muxer in stream 240>40
具体报错图片如下:
在这里插入图片描述
找了很多博客都没有这个报错的具体解决方案,因此决定自己写一个。
首先我们分析一下报错的信息,报错显示传送给封装器的dts的时间戳是非单调递增。
dts的全屏为decoding timestmp, 解码时间戳,ffmpeg要求解码时间戳要单调递增。
接下来分析发现是第一帧的dts为240,但是后续帧的dts为40。因此240>40,导致这一报错的发生。
因此我们可以手动将第一帧的dts设置为0,这样就不会引起报错,程序可以正常运行了。
我们可以设置一个变量为firstFrame,检测是否是第一个帧即可。
将下面这一段代码加入到程序计算dts之后即可。

if (avPacket.dts < 0 || avPacket.pts < 0 || avPacket.dts > avPacket.pts || firstFrame)
        {
            firstFrame=0;
            avPacket.dts = avPacket.pts = avPacket.duration = 0;
        }

觉得有用的xdm可以点波赞哦!

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值