为 Web 发布设置 ffmpeg 以获得最佳 VP9 质量

为 Web 发布设置 ffmpeg 以获得最佳 VP9 质量

我有 Apple ProRes 422 格式的视频,我计划将其编码为 Google 的 VP9 以在网络上发布。来源是:

Stream #0:0(und): Video: prores (apcn / 0x6E637061), yuv422p10le(bt709), 1920x1080, 114644 kb/s, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 24k tbn, 24k tbc (default)

我的目标是将其编码为 VP9,质量尽可能好(合理),几乎与原版没有区别。结果文件大小实际上并不重要。现在我使用以下方法,但 Chrome 中的视频看起来很糟糕:

ffmpeg -i Source.mov -c:v libvpx-vp9 -b:v 4M -pix_fmt yuv420p -speed 4 -frame-parallel 0 -threads 2 -c:a libopus -b:a 320K Result.webm

我尝试增加-b:v 4M设置,尺寸增加了,但质量没有增加。我也尝试了本指南,但可能已经过时了,我无法得到任何满意的结果。顺便说一句,我有最新的ffmpeg源代码编译。

ffmpeg我应该使用哪些设置?

答案1

好的,经过一些实验,我发现我在问题中提到的指南非常有用。我成功地使用了恒定质量推荐设置部分,需要微调的是-crf设置。

经过大量测试后,我最终选择了该-crf 23设置,与原始文件相比,结果webm文件的质量非常好。

确切的ffmpeg命令是:

  1. 第一遍:

    ffmpeg -i Source.mov -c:v libvpx-vp9 -pass 1 -pix_fmt yuv420p -b:v 0 -crf 15 -threads 2 -speed 4 -tile-columns 6 -frame-parallel 1 -an -y -f webm /dev/null
    
  2. 第二遍:

    ffmpeg -i Source.mov -c:v libvpx-vp9 -pass 2 -pix_fmt yuv420p -b:v 0 -crf 15 -threads 2 -speed 2 -tile-columns 6 -frame-parallel 1 -auto-alt-ref 1 -lag-in-frames 25 -c:a libopus -b:a 320k -f webm Out.webm
    

由于某种原因,尽管可以选择,但第一遍并没有使用所有 CPU 核心(在我的情况下是 2 个),-threads 2但第二遍却使用了所有 CPU 核心。

答案2

您正在以速度 4 进行 1 次编码,这是快速参数但远非最佳质量。

该指南看起来不错,你试过他们的 2-pass 或恒定/受限质量设置吗?显然,不要保留他们示例的 1000k 比特率。

相关内容