所以我遇到了以下问题计算1080p 720p 360p 240p质量的正确方法是什么?但那是针对 H264 MP4 文件而言的。
对于 MP4 文件,我将所有质量类型的 -crf 恒定速率因子设置为 18。
但是在 webm 中,应该如何设置各种质量类型。360p 480p 720p 1080p
这是我当前的 webm 命令行。
"C:/server/ffmpeg/bin/ffmpeg.exe" -y -i Z:/server/websites/ps/public_www/media/com_hwdmediashare/files/84/1a/33/f941f37ad1ee7645bdd1d9773a53f286.mpg -s 528x360 -vcodec libvpx -g 120 -rc_lookahead 16 -qmax 51 -qmin 11 -vb 2M -b 500k -bufsize 1000k -pass 1 -an -f webm Z:/server/websites/ps/public_www/media/com_hwdmediashare/files/84/1a/33/24bbec26dd3a2dc0809d996ea816bfbe.webm 2>&1
"C:/server/ffmpeg/bin/ffmpeg.exe" -y -i Z:/server/websites/ps/public_www/media/com_hwdmediashare/files/84/1a/33/f941f37ad1ee7645bdd1d9773a53f286.mpg -s 528x360 -vcodec libvpx -g 120 -rc_lookahead 16 -qmax 51 -qmin 11 -vb 2M -maxrate 24M -minrate 100k -b 500k -bufsize 1000k -pass 2 -acodec libopus -ab 90k -f webm Z:/server/websites/ps/public_www/media/com_hwdmediashare/files/84/1a/33/24bbec26dd3a2dc0809d996ea816bfbe.webm 2>&1
我没有设置 crf,但无论大小,视频输出看起来都有点块状和像素化,所以我想我应该设置一个。
答案1
如果输出看起来太块状或像素化,那是因为比特率太低。我看到你设置了 500 kBit/s,但对于 720p 或更高的视频来说,这个比特率太低了,无法达到合理的质量。
这VP8 编码指南列出了使用 libvpx 编码器时的一些选项。我同意你的观点,无论视频分辨率如何,使用恒定速率因子都是实现相同视觉质量水平的正确方法。
您为 x264 编码器使用了 CRF 18,这被认为是非常高的质量(可能不是视觉上无损的,但质量损失应该是不可察觉的)。对于 libvpx,CRF 范围略有不同。10 是一个很好的默认值(对于 x264 则是 23),所以我可能建议为 libvpx 使用类似 CRF 6–7 的值。
请注意,该-qmin
参数必须设置为等于或低于您选择的 CRF。否则无法编码。
请记住,最终比特率的上限设置为您使用 指定的值-b:v
。因此,如果您的 CRF 太低,并且您的比特率设置为-b:v 2M
,则最终比特率将为 2 MBit/s。
但实际上,没有什么比尝试不同的值更好的了。这完全取决于你的输入是什么样子,或者你的视频目标应用程序是什么。如果你只是做一些网络流媒体,你不需要这么高质量的视频。如果你想要离线存储,那么较低的 CRF 当然会更好。