【发布时间】:2017-09-01 00:24:24
【问题描述】:
我希望在 VP9 中以最佳质量编码使用 iPhone 6s 拍摄的 4k 视频。
作为参考,我想编码的视频的流数据,通过ffprobe:
Duration: 00:00:10.48, start: 0.000000, bitrate: 46047 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 3840x2160, 45959 kb/s, 29.98 fps, 29.97 tbr, 600 tbn, 1200 tbc (default)
Metadata:
creation_time : 2017-03-13T21:12:56.000000Z
handler_name : Core Media Data Handler
encoder : H.264
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 79 kb/s (default)
Metadata:
creation_time : 2017-03-13T21:12:56.000000Z
handler_name : Core Media Data Handler
我正在使用以下 FFmpeg 命令,基于these instructions(参见Best Quality (Slowest) Recommended Settings 部分)。
ffmpeg -i INPUT.mov -c:v libvpx-vp9 -pass 1 -b:v 46000K -threads 4 -speed 4 -g 9999 -an -f webm -y /dev/nullffmpeg -I INPUT.mov -c:v libvpx-vp9 -pass 2 -b:v 46000K -threads 4 -speed 0 -g 9999 -an -f webm OUTPUT.webm
是否有最佳做法来选择最佳-b:v 值,以使生成的视频在视觉上与原始视频无法区分?我尝试了从 36000K 到 46000K 的值,但这些值会导致总比特率超过目标比特率的海量文件。
提前致谢!
【问题讨论】:
-
这就是 CRF(恒定质量)模式的用途。使用
-crf 20 -b:v 0跳过两遍。在输入的短段上使用不同的 CRF 值(0 到 63)进行测试。一旦你达到了产生足够小和足够好的输出的值,就使用那个值。 -
@Mulvya 评论之上的加分点:尽管使用其他编码器,1-pass 和 2-pass CRF 应该给出相同的结果,不幸的是 libvpx 不是这种情况,你仍然应该这样做2-pass 编码,即使在做 CRF...