未来视频编解码器

首先讲一下 这不是我要做个编码器,我是要用一个编码器,准确的来说 是用一些编码器。

Google 推出的 webp 和 webm 出现的场景越来越多了,各类编解码器也都进入到了一个新的纪元。so 几年过去了,我决定 review 一下现有的编解码器。

HEVC (mp4)

  • 编解码较快
  • 较 AVC 质量更好

HEVC 是现有设备兼容(高质量)能力最强的,编解码要求最低的。(指较新的设备)。

但是也是对商业软件(针对编解码)收费的,个人自由使用。

ffmpeg -i input -c:v libx265 -crf 26 -preset fast -c:a aac -b:a 192k output.mp4

对于 有视频压制工作流的Studio来说 来说,有 NVENC 的夹持下 能做到速度最快。

VP9 (webm)

  • 编解码 较 AV1 快,较 HEVC 慢。
  • 接近 HEVC 质量

webm 是最折中的一种方案,但不知道为什么使用广度还不够大。

ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 2M output.webm
Input #0, matroska,webm, from 'output.webm':
  Metadata:
    DATE            : 2022
    MAJOR_BRAND     : mp42
    MINOR_VERSION   : 0
    COMPATIBLE_BRANDS: isommp42
    ENCODER         : Lavf59.16.100
  Duration: 00:19:24.71, start: -0.007000, bitrate: 5887 kb/s
  Stream #0:0: Video: vp9 (Profile 0), yuv420p(tv, smpte170m, progressive), 3840x2160, SAR 1:1 DAR 16:9, 60 fps, 60 tbr, 1k tbn (default)
    Metadata:
      HANDLER_NAME    : VideoHandle
      VENDOR_ID       : [0][0][0][0]
      ENCODER         : Lavc59.18.100 libvpx-vp9
      DURATION        : 00:19:24.707000000
  Stream #0:1: Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      HANDLER_NAME    : SoundHandle
      VENDOR_ID       : [0][0][0][0]
      ENCODER         : Lavc59.18.100 libopus
      DURATION        : 00:19:24.581000000

AV1

  • 编解码 最慢。
  • 较 HEVC 质量 好 30%

AV1 是质量最好的编解码器,也是最慢的。2分钟的视频,能压半天。

所以对于 肯投入技术力的商业公司 会去优化编码速度。但是对于个人来讲,基本不可用,时间空间转换效率极低。

即使质量好,在解码的时候也需要耗费更多的算力(会卡)。

ffmpeg -i input.mp4 -cpu-used 7 -c:v libaom-av1 -b:v 2M output.mkv
[libdav1d @ 0000017456e57a00] libdav1d 0.9.2-106-g19326c4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomav01iso2mp41
    date            : 2022
    encoder         : Lavf59.16.100
  Duration: 00:19:24.70, start: 0.000000, bitrate: 5720 kb/s
  Stream #0:0[0x1](und): Video: av1 (Main) (av01 / 0x31307661), yuv420p(tv, smpte170m, progressive), 3840x2160, 5580 kb/s, SAR 1:1 DAR 16:9, 60 fps, 60 tbr, 15360 tbn (default)
    Metadata:
      handler_name    : VideoHandle
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 130 kb/s (default)
    Metadata:
      handler_name    : SoundHandle
      vendor_id       : [0][0][0][0]
[libdav1d @ 0000017456e49080] libdav1d 0.9.2-106-g19326c4

origin

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Yuan Shen 原神 2022.02.17 - 21.48.04.10.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2022-02-17T14:07:29.000000Z
    date            : 2022
  Duration: 00:19:24.70, start: 0.000000, bitrate: 44788 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m, progressive), 3840x2160 [SAR 1:1 DAR 16:9], 44587 kb/s, 60 fps, 60 tbr, 90k tbn (default)
    Metadata:
      creation_time   : 2022-02-17T14:07:29.000000Z
      handler_name    : VideoHandle
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 195 kb/s (default)
    Metadata:
      creation_time   : 2022-02-17T14:07:29.000000Z
      handler_name    : SoundHandle
      vendor_id       : [0][0][0][0]

to be continued

本来是想了好多东西,但是因为拖了太长时间,差不多忘完了,等啥时候想起来了再补充吧。