在尝试优化我的家庭视频的大小时,我将其中一些转换为 WebM 作为测试,在 Xubuntu 上使用 Pitivi。大小差异显着。生成的 webm 文件只有原始文件的 10% 左右,而图片质量在我看来几乎相同。
我还尝试使用进行转换,avconv
以便我可以编写脚本,但生成的文件看起来非常糟糕。在查看 Pitivi 中的渲染设置后,我尝试了一些参数:avconv -i $1 -q 5 -qmin 0 -qmax 63 ${1%.*}.webm
,但质量看起来仍然很糟糕,所以我似乎缺少/使用了一些错误的参数。有人知道哪些是用于将 h264 电影转换为 webm 并获得与 Pitivi 相同质量的正确参数吗?
这些是 Pitivi 中的设置:
slh*_*hck 54
注意:此信息基于 FFmpeg Wiki on VP9 encoding。请参阅该文章以获取更多信息——它将不断维护和扩展。为了获得最佳效果,您应该
ffmpeg
通过从他们的网站下载来使用最新版本(静态构建就足够了;它包含libvps-vp9
编码器)。
VBR 编码为您提供最佳的整体质量,因为编码器可以自由选择分配给帧的位数。除非您正在为恒定比特率流媒体准备视频,否则请选择此模式。
通常,如果您不想针对特定的文件大小,您应该让比特率自由变化,因为这将导致最高质量。您可以通过将比特率设置为 0 并将恒定速率因子 ( CRF ) 设置为目标质量级别来实现此目的:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm
Run Code Online (Sandbox Code Playgroud)
CRF 值可以是 0–63。较低的值意味着更好的质量。建议值范围为 15–35,建议 31 用于 1080p 高清视频。谷歌有一个指南,提供更多信息。
如果您希望文件具有特定的目标比特率或文件大小,则需要指定速率并使用两遍编码(这将确保最佳质量分布)。这里我们选择 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
查看输出并根据自己的喜好(或文件大小限制)增加或减少比特率。例如,您可以使用500K
或5M
等。
您必须指定-minrate
,-maxrate
和比特率-b:v
才能使编码器使用 CBR。它们都必须具有相同的值——否则它会选择不同的目标比特率并进行 VBR 编码,但质量很差。
当前选择的 VP9 编码音频编解码器是 Opus。默认情况下,FFmpeg 将选择必要的编码器及其选项。如果你想显式设置-c:a libopus
,你也可以这样做。有关更多选项,请参阅libopus
文档。
归档时间: |
|
查看次数: |
24184 次 |
最近记录: |