ffmpeg ts固定码率个人见解

编码ts的固定码率时候,也许你会遇见这样的问题。

pcr < dts 的 warning,或者vbv的overflow。这时,十分诡异的问题来了,如果你输入不同的输入,编码参数都是一样。但一个可以,一个不行。通过观察,你会发现,不行的那个出现一个明显的画面晃动,或者画质本身较高。

这时,你猜想是不是哪里出现了问题了呢?

通过查看源码在mpegtsenc.c里我们可以看到那个异常

 

 

 

pcr的计算是通过了get_pcr(ts,s->pb)计算所得的。

 

 

这里我们不难看到计算方式就是通过计算文件的写入的偏移,通过转换成ts的muxrate的timebase下,加上一开始的pcr得到。这时,注意到,如果偏移量跟本身你写入的dts的时间对比就知道一个关键问题了。那就是在那个ts的码率下,我们本身的写入的大小这时对应的dts应该是一个大于等于pcr的存在的。因为你要知道那时的pcr代表了当前由文件偏移计算出来的时间dtstmp,而你却小于上一个dtstmp。这样不出warning才怪!

这时我们知道问题来源了。

要么你当前的pts是自己计算错了,如果不是。恭喜你,获得跟我一样的处境。

就是x264编码出来的质量高于你本身的封装的质量了。说到这里,相信你也知道了解决方案了。至此,困扰了接近2个星期的问题close。

 

转载于:https://www.cnblogs.com/zoring/p/7908298.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值