【问题标题】:FFmpeg - selecting appropriate bitrate for VP9 encodingFFmpeg - 为 VP9 编码选择合适的比特率
【发布时间】: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 部分)。

  1. ffmpeg -i INPUT.mov -c:v libvpx-vp9 -pass 1 -b:v 46000K -threads 4 -speed 4 -g 9999 -an -f webm -y /dev/null
  2. ffmpeg -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...

标签: ffmpeg webm libvpx vp9


【解决方案1】:

只需尝试不同的、低得多的比特率,然后查看结果。我试着观察文物。头发还好看吗?布?刻字,例如在路标和商店橱窗上?没有阻塞?锋利的边缘没有暗色和亮色的流血?没有回声?我发现原始的运动模糊很难判断,必须并排比较才能分辨出它和压缩伪影之间的区别。

尝试 36000k 的 1/10。我发现标称 400k 比特率的 vp9 在 1280x720 视频上效果很好。 (带有 libvpx-vp9 的 ffmpeg 过冲,我通常会得到高出 20% 的实际比特率,480k)4K 是 3840x2160,是 1280x720 的 9 倍,所以看起来 3600k 比特率应该会产生很好的效果。

另一个指南是,据报道,vp9 在质量上与 mp4 差不多,但比特率只有一半。在 mp4 中以 1000k 比特率看起来不错的视频在 vp9 中应该在 500k 时看起来不错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多