注意:此信息基于VP9编码的FFmpeg Wiki 。请参阅该文章以获取更多信息-该文章将不断维护和扩展。为了获得最佳效果,您应该使用最新版本的ffmpeg
,方法是从他们的网站下载(静态版本就足够了;它包含libvps-vp9
编码器)。
可变比特率
VBR编码可为您提供最佳的整体质量,因为编码器可以自由选择要分配给帧的位数。除非您正在准备用于恒定比特率流的视频,否则请选择此模式。
选项1:恒定质量编码
通常,如果您不想指定特定的文件大小,则应让比特率自由变化,因为这将带来最高的质量。您可以通过将比特率设置为0并将恒定速率因子(CRF)设置为目标质量级别来实现:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm
CRF值可以在0到63之间。较低的值表示更好的质量。推荐值范围为15–35,对于1080p高清视频,推荐值为31。Google有一个指南,其中包含更多信息。
选项2:具有目标比特率的两次通过编码
如果希望文件具有特定的目标比特率或文件大小,则需要指定速率并使用两次通过编码(这将确保最佳的质量分配)。在这里,我们选择5 MBit / s,对于1080p内容应该足够了。
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 1 -f webm /dev/null && \
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 2 output.webm
Windows用户需要使用NUL
代替/dev/null
和^
来代替\
。
恒定比特率
首先,libvpx 提供恒定比特率和可变比特率编码模式。应尽可能避免恒定比特率(除非您针对特定的文件大小或流传输方案),因为每个文件大小的平均质量会更差。不过,如果没有其他适合您的方法,您可以尝试设置恒定的比特率,例如1 MBit / s:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -minrate 5M -maxrate 5M -b:v 5M output.webm
查看输出并根据自己的喜好(或文件大小限制)增加或减少比特率。例如,您可以使用500K
或5M
等。
你必须指定-minrate
,-maxrate
以及比特率-b:v
,以使编码器使用CBR。它们都必须具有相同的值-否则,它将选择不同的目标比特率,并进行VBR编码,但质量较差。
音讯
VP9编码当前选择的音频编解码器是Opus。FFmpeg将默认选择必要的编码器及其选项。如果要显式设置-c:a libopus
,也可以这样做。有关更多选项,请参考libopus
文档。