gpt4 book ai didi

encoding - 为什么 FFMPEG 总是生成很大的 WebM 文件?

转载 作者:行者123 更新时间:2023-12-02 11:00:47 24 4
gpt4 key购买 nike

我正在尝试将我的电影编码为 WebM:

ffmpeg -i input.MOV -codec:v libvpx -quality good -cpu-used 0 -b:v 10k
-qmin 10 -qmax 42 -maxrate 10k -bufsize 20k -threads 8 -vf scale=-1:1080
-codec:a libvorbis -b:a 192k
output.webm

我想以几种不同的比特率进行编码(视频和音频组合):

  • 2192 kbps
  • 1692 kbps
  • 1000 kbps

问题是,无论我输入哪种比特率,我总是得到比特率高于 1900 kbps 的文件。 (上面的代码示例为 1914 kbps。)

我做错了什么?

最佳答案

libvpx 在速率控制和质量设置方面有点复杂。请引用vpx Encoding GuideVP8 Encode Parameter Guide了解更多信息。我花了一个小时挖掘源代码才理解它。

如果您想设置恒定比特率,则必须将 b:vmaxrateminrate 设置为相同的值,例如像这样的示例(请注意,为了简洁起见,我在此处省略了音频选项):

ffmpeg -i input.mov -c:v libvpx -b:v 1900K -maxrate 1900K -minrate 1900K output.webm

如果您想使用可变质量并仅指定比特率上限,则需要同时设置 b:vcrf。如果省略crf,则指定的比特率将仅被视为平均值。只有使用 crf 时,编码器才会将 b:v 的含义更改为允许的最大速率。

ffmpeg -i input.mov -c:v libvpx -b:v 1900K -crf 10 output.webm

CRF 的值为 10 是一个很好的起点,但是 libvpx 可能会在 qmin ≤ q ≤ qmax 的范围内改变每帧的质量,您可以使用该值如果您愿意也可以指定。将 qmin 的下限设置为 10 对我来说似乎有点高,但本质上您无论如何都必须进行一些尝试和错误,因为如果最大比特率太低,您将不断地使其饱和。

关于encoding - 为什么 FFMPEG 总是生成很大的 WebM 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15761893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com