对于渲染来说,所花费的时间差别很大。
-b 3500K -minrate 0K -maxrate 8000K
耗时 1小时17分钟vb=3000k
需要 2.5 小时
它是什么?vb 3000k
它与 有何不同-b 3500K -minrate 0K -maxrate 8000K
?这些是可变比特率设置吗?
如果我改为-b 3500K -minrate 3500K -maxrate 3500K
,那是恒定比特率吗?
答案1
请阅读文档对于 FFmpeg,并运行ffmpeg -h full
选项列表。另外,看看我写的这篇文章,它展示了速率控制模式之间的差异在 x264 和 x265 等编码器中。
一般来说,这些选项的含义如下:
-b:v
(或-vb
,相同)指定编码器使用的目标平均比特率:-b
<int>
E..VA
. 设置比特率(以比特/秒为单位)(从 0 到 INT_MAX)-minrate
指定要使用的最小公差:-minrate
<int>
E..VA
. 设置最小比特率容差(以比特/秒为单位)。在设置 CBR 编码时最有用。否则用处不大。(从 INT_MIN 到 INT_MAX)-maxrate
指定最大公差。但是,如文档所示,这仅与以下内容结合使用bufsize
:-maxrate
<int>
E..VA
. 设置最大比特率容差(单位为比特/秒)。需要bufsize
设置。(从 INT_MIN 到 INT_MAX)-bufsize
<int>
E..VA
. 设置速率控制缓冲区大小(以位为单位)(从 INT_MIN 到 INT_MAX)这只对可变比特率编码有意义,在这种情况下,编码器不使用恒定比特率或恒定质量模型,而是使用解码器上的虚拟缓冲区模拟传输。/ /
-minrate
选项控制该缓冲区大小。您通常只将此模式用于流式传输,因为该技术将限制比特率,以便不超过某个值,这会导致解码器缓冲区溢出或下溢。-maxrate
-bufsize
总而言之,您有几种限制比特率的选项:
要设置 CBR 过程,您必须检查编码器提供的内容。通常,您无法实现“完美”的恒定比特率,因为编码器不会浪费比特。将
-b:v
、-minrate
和设置-maxrate
为相同级别将实现这一点,例如对于 libx264:ffmpeg -i input.mp4 -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M output.ts
警告:这可能会导致难以编码的视频质量低下,并且会浪费比特。除非您绝对需要实现恒定速率输出,否则请不要使用此选项。
为流式传输设置受限/可变比特率流程。
-b:v 3500K -maxrate 3500K -bufsize 1000K
例如,使用。显然,您必须根据上下文调整速率和缓冲区大小。缓冲区大小越高,允许的比特率变化就越大。使用恒定质量目标并限制比特率以捕捉峰值。例如,使用
-c:v libx264 -crf 23 -maxrate 4M -bufsize 4M
目标 CRF 为 23 的可变比特率进行编码,但将输出限制为最大 4 MBit/s。