![为 Web 发布设置 ffmpeg 以获得最佳 VP9 质量](https://linux22.com/image/1484251/%E4%B8%BA%20Web%20%E5%8F%91%E5%B8%83%E8%AE%BE%E7%BD%AE%20ffmpeg%20%E4%BB%A5%E8%8E%B7%E5%BE%97%E6%9C%80%E4%BD%B3%20VP9%20%E8%B4%A8%E9%87%8F.png)
我有 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
命令是:
第一遍:
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
第二遍:
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 比特率。