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 编码如何做带宽控制输出的主要内容,如果未能解决你的问题,请参考以下文章

使用ffmpeg编码时,如何设置恒定码率,并控制好关键帧I帧间隔

编码时如何让FFMPEG使用更多GPU

FFMPEG 音频封装编码

H264编码系列之ffmpeg和x264码率控制分析

Qt与FFmpeg联合开发指南——编码:完善功能和基础封装

如何在c ++中使用ffmpeg编码视频时设置moov原子位置