guide5 分钟阅读

编解码器参数调优:H.264、H.265 与 AV1 深度指南

深入掌握H.264、H.265/HEVC和AV1的CRF值、预设、档次和码率模式,附带实用编码命令示例。

作者:Lucas

为什么编码参数值得深入研究

大多数人导出视频的时候,直接用剪辑软件的默认设置就交差了。结果通常"还行"——但"还行"意味着你在画质和文件大小上都没有做到最优。搞懂编码参数能让你在画质、文件体积、编码速度和兼容性之间做出明智的取舍。

这篇文章覆盖的三个编解码器——H.264、H.265(HEVC)和 AV1——代表了三代视频压缩技术。每一代大约比上一代提升 30-50% 的压缩效率,但它们在底层的调优逻辑上有很多共通之处。

这篇指南会深入到真正影响结果的参数,并附上你可以直接拿来用的编码命令。

三个编解码器通用的核心概念

在进入具体编解码器之前,先理解几个跨编解码器的通用概念。

码率控制模式

码率控制决定了编码器如何在整个视频中分配比特:

  • CRF(恒定质量因子) -- 编码器以一致的感知质量为目标。文件大小取决于内容复杂度。对大多数离线编码场景来说是最好的模式。 -- CBR(恒定码率) -- 每秒视频分配大致相同的比特数。某些流媒体和广播系统要求使用。简单画面浪费比特,复杂画面不够用。 -- VBR(可变码率) -- 编码器动态调整码率,复杂画面多给,简单画面少给。可以设上限(受限 VBR)或不设上限。 -- CQ(恒定质量) -- 类似 CRF 但用于硬件编码器。以质量等级而非码率为目标。 -- 两遍编码 -- 编码器先分析整个视频,然后用最优的比特分配来编码。比单遍 VBR 效果好,但耗时翻倍。

建议: 本地文件和归档内容用 CRF。需要命中特定码率目标的流媒体交付用受限 VBR 或两遍编码。

I帧、P帧和B帧

视频编解码器通过利用帧与帧之间的冗余来压缩:

  • I帧(帧内编码) -- 完整独立编码的帧。体积大但作为参考点。跳转定位必须依赖它。 -- P帧(预测帧) -- 只编码与前面参考帧的差异。比 I 帧小。 -- B帧(双向预测帧) -- 编码与前后帧的差异。最小但需要更多计算量。

这些帧类型的比例和排列方式会显著影响压缩效率和编解码复杂度。

色度采样

视频将颜色信息存储为亮度(Y)和色度(Cb/Cr)通道:

  • 4:4:4 -- 全色彩分辨率。用于制作和特效。 -- 4:2:2 -- 水平色度分辨率减半。常见于专业中间编解码器。 -- 4:2:0 -- 色度分辨率为四分之一。交付标准。观众看到的几乎都是这个。

网络交付几乎都应该用 4:2:0。在交付分辨率下,画质差异肉眼基本看不出来。

位深

  • 8bit -- 每通道 256 级。SDR 内容标准。 -- 10bit -- 每通道 1024 级。HDR 必需。对 SDR 编码也有好处,能减少色带伪影。 -- 12bit -- 每通道 4096 级。交付中很少用,用于高端制作。

小技巧:即使是 SDR 交付,用 10bit 编码也能在相同文件大小下比 8bit 出更好的效果,因为编码器内部有更高的精度可以利用。H.265 和 AV1 对 10bit 支持很好;H.264 10bit 的解码器支持有限。

H.264 (AVC) 参数调优

H.264 仍然是兼容性最广的编解码器。如果兼容性是第一优先级,就用它。

CRF 值

x264 的 CRF 范围是 0(无损)到 51(最差画质):

  • CRF 18 -- 大部分内容肉眼无损。文件大。用于母版或归档。 -- CRF 20-22 -- 画质非常好。高质量交付的甜蜜点。 -- CRF 23 -- x264 默认值。画质好,文件大小合理。 -- CRF 24-26 -- 画质不错,仔细看能看到压缩痕迹。大多数网络交付够用。 -- CRF 28-30 -- 压缩伪影可见。低带宽场景可接受。 -- CRF 32+ -- 画质损失明显。只在对文件大小有极端要求时用。

实用示例:

ffmpeg -i input.mp4 -c:v libx264 -crf 22 -preset medium -c:a aac -b:a 128k output.mp4

预设(Preset)

预设控制编码速度和压缩效率之间的取舍。越慢的预设会尝试更多编码方案来找到更好的压缩方式:

  • ultrafast -- 最快。文件最大。压缩效率最差。 -- superfast、veryfast、faster、fast -- 依次变慢,效率依次提高。 -- medium -- 默认值。多数用途的好平衡。 -- slow -- 压缩效率明显提升。编码时间不紧张的话推荐用这个。 -- slower -- 收益递减从这里开始。比 slow 小 5-10% 左右。 -- veryslow -- 实用范围内的最大压缩。可能比 medium 慢 5-10 倍。 -- placebo -- 比 veryslow 几乎没有提升。不值得。

实际影响: 同样 CRF 下,ultrafast 和 veryslow 的文件大小差异可达 40-60%。medium 和 slow 之间通常差 5-15%。

实用建议: 最终交付用 slow。预览和草稿用 fastveryfast

档次(Profile)和级别(Level)

档次定义了可用的编码特性:

  • Baseline -- 没有 B 帧,没有 CABAC。最大兼容性(老设备、视频通话)。 -- Main -- 启用 B 帧和 CABAC。大多数现代设备都兼容。 -- High -- 增加 8x8 变换。压缩最好。现代硬件基本都支持。

级别定义最大分辨率、帧率和码率:

  • Level 4.1 -- 最高 1080p60 -- Level 5.1 -- 最高 4K30 -- Level 5.2 -- 最高 4K60

网络交付实用示例:

ffmpeg -i input.mp4 -c:v libx264 -crf 22 -preset slow -profile:v high -level 4.1 -pix_fmt yuv420p -c:a aac -b:a 128k output.mp4

H.264 关键调优参数

  • -tune -- 针对特定内容类型优化:

    • film -- 真人实拍内容
    • animation -- 动画内容,大面积平涂和锐利边缘
    • grain -- 保留胶片颗粒而不是去除它
    • zerolatency -- 禁用增加延迟的特性(直播场景)
  • -g(关键帧间隔) -- I 帧之间的最大间隔。默认 250 帧。流媒体场景建议设为帧率的 2 倍(比如 30fps 设 60),实现 2 秒的跳转精度。

  • -bf -- B 帧数量。默认 3。数值越高压缩稍好但解码器负担越重。

H.265 (HEVC) 参数调优

H.265 在同等画质下比 H.264 大约提升 50% 的压缩率,但编码复杂度更高。

CRF 值

x265 的 CRF 范围也是 0-51,但刻度和 x264 不一样:

  • CRF 18-20 -- 肉眼无损。高质量母版。 -- CRF 22-24 -- 画质优秀。适合高质量交付。 -- CRF 26-28 -- x265 默认范围。画质好,文件高效。大多数网络交付的甜蜜点。 -- CRF 30-32 -- 压缩可见。带宽受限场景可接受。 -- CRF 34+ -- 画质损失明显。

重要提醒:x265 的 CRF 28 和 x264 的 CRF 28 画质不一样。粗略来说,x265 CRF 28 的视觉质量大约相当于 x264 CRF 23。

预设

x265 预设命名和 x264 一样,但速度差异更大:

  • medium -- 默认。合理平衡。 -- slow -- 推荐用于正式编码。压缩提升明显。 -- slower -- 比 slow 有不错的提升,值得为归档或流媒体母版多花时间。

关键点: H.265 编码本身就比 H.264 慢 2-5 倍(同预设下)。x264 medium 要 1 分钟的话,x265 medium 可能要 3-5 分钟。

H.265 特有参数

通过 -x265-params 可以做精细控制:

  • aq-mode=3 -- 自适应量化模式。带偏差的自动方差模式,通常比默认出更好的感知质量。 -- psy-rd -- 心理视觉率失真优化。控制编码器在感知质量和数学精度之间的偏好。默认 2.0。1.5-2.5 对大多数内容效果好。 -- sao -- 采样自适应偏移滤波器。减少色带和振铃伪影。干净内容开启,要保留颗粒感的考虑关闭。

H.265 实用编码示例:

ffmpeg -i input.mp4 -c:v libx265 -crf 24 -preset slow -pix_fmt yuv420p10le -x265-params "aq-mode=3:psy-rd=2.0" -c:a aac -b:a 128k output.mp4

H.265 的 HDR 编码

H.265 是目前 HDR 交付最实用的编解码器:

ffmpeg -i input.mp4 -c:v libx265 -crf 22 -preset slow -pix_fmt yuv420p10le \
  -x265-params "hdr-opt=1:repeat-headers=1:colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc:master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,1):max-cll=1000,400" \
  -c:a aac -b:a 128k output_hdr.mp4

AV1 参数调优

AV1 是三者中最新的,压缩效率最好,但编码速度是个重大考量。

编码器选择

和 H.264/H.265 各有一个主流软件编码器不同,AV1 有好几个:

  • libaom-av1 -- 参考编码器。最慢但功能最全。用于质量基准测试。 -- SVT-AV1 -- Intel 和 Netflix 开发。比 libaom 快得多。大多数实际编码的推荐选择。 -- rav1e -- Rust 语言编写。开发活跃,质量好,但用的人相对少。

实际工作中,SVT-AV1 是速度和质量权衡下的明确赢家

CRF 值(SVT-AV1)

SVT-AV1 的 CRF 范围是 0-63:

  • CRF 18-22 -- 肉眼无损。文件大。 -- CRF 24-28 -- 画质优秀。高质量交付。 -- CRF 30-35 -- 画质好。网络交付的甜蜜点。视觉质量大约相当于 H.265 CRF 24-26,但文件明显更小。 -- CRF 38-42 -- 带宽受限场景可接受。 -- CRF 45+ -- 画质损失明显。

速度预设(SVT-AV1)

SVT-AV1 用数字预设,从 0(最慢、压缩最好)到 13(最快、压缩最差):

  • Preset 0-2 -- 研究级质量。极慢。不实用。 -- Preset 3-4 -- 高质量。很慢但可用于归档或流媒体母版。 -- Preset 5-6 -- 画质好。编码速度合理。大多数正式编码推荐用这个。 -- Preset 7-8 -- 编码快。大多数网络交付画质足够。 -- Preset 9-10 -- 非常快。仔细看能发现画质损失。 -- Preset 11-13 -- 最快选项。用于预览和实时场景。

AV1 实用编码示例:

ffmpeg -i input.mp4 -c:v libsvtav1 -crf 30 -preset 6 -pix_fmt yuv420p10le -svtav1-params "tune=0" -c:a libopus -b:a 128k output.webm

胶片颗粒合成——AV1 的秘密武器

胶片颗粒合成是 AV1 最强大的特性之一。天然的胶片颗粒和传感器噪声编码成本极高,因为它们是随机的高频信息。AV1 可以:

  1. 分析并从源视频中去除颗粒
  2. 以更低码率编码干净的视频
  3. 在码流中嵌入颗粒参数
  4. 解码器在播放时重新合成匹配的颗粒

对有颗粒的内容,码率节省可达 20-40%,而且感知质量没有损失。这是 AV1 独有的,H.264 和 H.265 都没有。

ffmpeg -i grainy_input.mp4 -c:v libsvtav1 -crf 30 -preset 6 -svtav1-params "film-grain=15:film-grain-denoise=1" -c:a libopus -b:a 128k output.webm

实用编码配方

配方 1:高质量归档(H.264)

最大兼容性,优秀画质,合理文件大小:

ffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset slow -profile:v high -pix_fmt yuv420p -c:a aac -b:a 192k archive.mp4

配方 2:网络交付(H.264)

广泛兼容,画质好,文件大小优化:

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset slow -profile:v high -level 4.1 -pix_fmt yuv420p -movflags +faststart -c:a aac -b:a 128k web_h264.mp4

-movflags +faststart 会把 MP4 元数据移到文件开头,让浏览器不用下载整个文件就能开始播放。

配方 3:高效网络交付(H.265)

面向现代苹果设备和支持的浏览器的更好压缩:

ffmpeg -i input.mp4 -c:v libx265 -crf 26 -preset slow -pix_fmt yuv420p10le -x265-params "aq-mode=3" -tag:v hvc1 -c:a aac -b:a 128k web_h265.mp4

-tag:v hvc1 确保 Safari 和苹果设备能播放文件。不加的话,部分苹果软件会拒绝播放,即使编解码器本身是支持的。

配方 4:最高效率网络交付(AV1)

最佳压缩,面向现代浏览器:

ffmpeg -i input.mp4 -c:v libsvtav1 -crf 30 -preset 6 -pix_fmt yuv420p10le -svtav1-params "tune=0:enable-overlays=1" -c:a libopus -b:a 128k web_av1.webm

配方 5:带码率上限的流媒体(H.264)

平台要求可预测码率的场景:

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset slow -profile:v high -maxrate 5M -bufsize 10M -pix_fmt yuv420p -movflags +faststart -g 60 -keyint_min 60 -c:a aac -b:a 128k streaming.mp4

三个编解码器对比

在同等视觉质量下(各编解码器使用最佳设置):

文件大小对比(以 H.264 = 100% 为基准):

  • H.264(x264, CRF 22, slow)-- 100%(基准) -- H.265(x265, CRF 26, slow)-- H.264 的 55-65% -- AV1(SVT-AV1, CRF 30, preset 6)-- H.264 的 40-55%

编码时间对比(以 H.264 = 1x 为基准):

  • H.264(x264, slow)-- 1x(基准) -- H.265(x265, slow)-- 慢 3-5 倍 -- AV1(SVT-AV1, preset 6)-- 慢 5-10 倍

解码兼容性:

  • H.264 -- 通用。过去 15 年生产的所有设备。 -- H.265 -- 广泛但不通用。Safari、iOS、大多数安卓、部分浏览器。 -- AV1 -- 增长中。Chrome、Firefox、Edge、Safari 17+、较新的手机和显卡。

高效编码工作流的小贴士

用 Vibbit 简化编码流程

当你需要管理多个视频或者需要在一个内容库中保持一致的质量水准时,Vibbit 这类工具可以自动化编解码器选择和参数调优过程,比手动调整每个导出节省大量时间。

先测试再全量编码

在编码整个项目之前,先用你选定的设置编码一段有代表性的 30-60 秒样本。目视比较画质,检查文件大小。根据需要调整 CRF 或预设,然后再跑全片编码。

尽可能并行化

x265 和 SVT-AV1 都支持多线程编码,但在高预设下可能无法用满所有 CPU 核心。批量编码时,并行跑多个编码任务可能比一个一个跑更高效。

硬件编码作为补充

硬件编码器(NVENC、QSV、AMF)速度快得多,但在同等画质下文件更大。它们适合:

  • 速度至关重要的直播场景 -- 剪辑过程中的快速预览 -- 两步工作流中的第一步编码

对于画质和文件大小最重要的最终交付,软件编码器(x264、x265、SVT-AV1)仍然更优。

理解编码参数不是为了背每个参数——而是知道哪些参数影响最大,以及怎么根据你的具体内容和交付需求来调整。这篇指南里的编码配方覆盖了最常见的场景,参数讲解给你提供了在需要时灵活调整的知识基础。

标签

codecH.264H.265AV1video encoding