ffmpeg 编码如何做带宽控制输出
Posted qianbo_insist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ffmpeg 编码如何做带宽控制输出相关的知识,希望对你有一定的参考价值。
背景
因为最近在做智慧讲台,做内容投屏到大屏,发现在网络在无线下非常不稳定,如果不使用均值码率的控制,一定会造成堵塞。查阅了ffmpeg官方网站,得到了一个有效的方法。
限制码率
限制输出码率是一个有效的输出,如果我们是用来限制一个特殊的规格,比如蓝光编码,
-b:v 是指明目标编码的平均编码码率。
-minrate 指明最小容忍度的编码码率
-maxrate 指明一个最大容忍度编码码率,该码率和bufsize相关联
-bufsize 指明解码缓冲大小, 决定了输出码率的可变特性
案例
例如,要产生一个稳定的限制码率直播流,这种情况下,控制均码,是可以控制带宽的使用的
下面是一个典型的案例:
ffmpeg -i input -c:v libx264 -b:v 2M -maxrate 2M -bufsize 1M output.mp4
这里最为关键的选项为bufsize ,这个选项告诉编码器怎么计算平均码率
-bufsize 到底做什么呢,基于这个选项,ffmpeg 会计算和纠正平均abr码率的生产情况,如果我们不指定bufsize, 内部会显著增加这个值,这个会引起码率的抖动,会不稳定输出码率值
如果我们减小这个值,ffmpeg 将会检查码率是否均匀,当然,更低的bufsize,会降低码率均值
如果-bufsize更小则会引起ffmpeg去降低图像的质量,这个缓冲值不够时只能牺牲质量去做优化。
如果要对这个值优化,读者需要去尝试不同的bufsize,直到这个值不再显著降低码率均值。也就是到一个合理的位置。
实际
实际在使用的时候,降低这个bufsize是有效果的。
以上是关于ffmpeg 编码如何做带宽控制输出的主要内容,如果未能解决你的问题,请参考以下文章