libaom AV1 编码指南
libaom-av1 是用于支持由 AOM(Alliance for Open Media,开放媒体联盟)制定的 AV1 的编码器,一个开源、免版权费的编码器。相较于 VP9 和 H.265 / HEVC,在相同画质的情况下, libaom-av1 可以节约 30% 的带宽,而相较于 H.264 可节约 50% 的带宽。
要安装支持 libaom-av1 的 ffmepg,请查看 编码指南 ,并使用 --enable-libaom
选项编译 FFmepg。
libaom 提供以下速度控制控制模式,用于决定视频质量和体积大小:
- 恒定质量(Constant Quality)
- 约束质量(Constrained Quality)
- 二压平均比特率(2-pass average bitrate)
- 单压平均比特率(1-pass average bitrate)
要查看可用选项,运行 FFmpeg -h encoder=libaom-av1
提醒: libaom 版本低于 2.0.0 的用户需要使用 -strict experimental
选项(或者缩写 -strict -2
)
恒定质量(Constant Quality)
libaom-av1 有一个恒定质量(CQ)模式(就像是 x264 和 x265 的 CRF),可以确保每一帧画面都得到相应画质水平(视觉感知上的)下应得的比特率,而不是编码每一帧都达到指定比特率。这可以得到更好的总体质量。如果你不需要压缩到指定的文件体积,这应当是你的最佳选择。
要启用这个选项,你必须同时使用 -crf
和 -b:v 0
这两个选项。-b:v
的值 必须 是 0 !
ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -b:v 0 av1_test.mkv
CRF 的值可以是 0–63,数字越小,画质越高,同时文件体积越大。
约束质量(Constrained Quality)
libaom-av1 也有一个约束质量模式,可以确保比特率低于某个数值或者在指定数值区间的同时,达到指定画质要求。这个方式对于使用一致要求批量编码视频很有用。
ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -b:v 2000k output.mkv
视频画质由 -crf
决定,并且比特率由 -b:v
决定。-b:v
必须是非 0 值。
你也可以设置比特率的最小值和最大值:
ffmpeg -i input.mp4 -c:v libaom-av1 -minrate 500k -b:v 2000k -maxrate 2500k output.mp4
Note: 当编码到 MP4 容器时,如果这个文件是要用于推流,你最好加上 -movflags +faststart
参数。
二压(Two-Pass)
为了达到指定比特率,并且尽可能保证画质最高,你需要使用二压,也就需要运行 FFmpeg 2 次,使用几乎相同的选项,除了:
- 在第一次和第二次压制中,分别使用
-pass 1
和-pass 2
选项 - 在第一次压制中,输入到一个空文件描述符,而不是实际的文件。(这会生成一个日志文件,在第二次压制的时候会用到)
- 在第一次压制的时候,你可以使用
-an
选项忽略音频
ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 2M -pass 1 -an -f null /dev/null && \
ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 2M -pass 2 -c:a libopus output.mkv
Note: windows 用户应当使用 NUL
替代 /dev/null and
,用 ^
替代 \
。
平均比特率 (ABR)
libaom-av1 也提供简单的平均比特率或目标比特率模式,在这个模式中,他只会尝试达到指定的平均比特率,例如 2 MBit/s。
ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 2M output.mkv
建议只有当文件体积远远比画质重要时再使用这个方式,否则,请使用上述提到的其他画质控制方式。
控制速度/质量
-cpu-used
设置压缩效率,默认值是 1,更低的数值表示更慢的编码速度和更好的画质。
-row-mt 1
启用基于行的多线程,以达到最大的 CPU 使用率,要启用快速编码性能,也加上 tile(例如 -tiles 4x1
或 -tiles 2x2
启用 4 tiles)。启用 row-mt 只会在当 cpu 的线程数大于编码 tiles 时速度快些。
HDR
当编码 HDR 视频的时候,有必要将颜色信息传递:-colorspace
、-color_trc
、-color_primaries
,例如,YouTube HDR 使用:
-colorspace bt2020nc -color_trc smpte2084 -color_primaries bt2020
更多信息
你可以在这里找到关于 AV1 的更多信息
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于