1. 从一次编码器选型争论说起
前阵子团队内部做下一代视频管线的技术预研,会议室里差点吵起来。一派坚持继续沿着传统混合编码框架走,把 H.266/VVC 的参考实现啃透;另一派则觉得神经编码这两年论文刷得飞起,该直接押注端到端方案。两边都有道理,但谁也说服不了谁,最后只能拉出一张白板,把"先进"这个词拆开来看——到底是压缩率先进、复杂度先进,还是工程落地先进。
这个问题其实特别典型。但凡你做过视频相关的系统,早晚会撞上这个岔路口:一边是几十年工业沉淀下来的传统 Codec 体系,从 H.264 到 HEVC 再到 H.266,标准文档厚得能砸死人;另一边是神经网络驱动的编码方案,动辄端到端训练、隐式建模,论文里的 RD 曲线漂亮得不像话。可真到了要上线、要控成本、要保证兼容性的时候,事情就完全不是论文里那个样子了。
我写这篇东西,不是要给出一个"谁赢谁输"的结论,那种结论基本没有意义。我更想干的是把这两条路线的底层逻辑摊开讲清楚:H.266 到底在哪些地方做了实质性的改进,神经编码的"先进"又先进在哪个维度,以及一个真正做工程的人,在当下这个时间点该怎么判断和取舍。关键词里的 H.266、Codec、神经编码、VVC、视频编码,我会一个个落到具体的技术点上,而不是停留在概念层面。
如果你正在做视频转码、点播、直播、云游戏、远程桌面这类系统,或者单纯对下一代视频编码的技术走向感兴趣,这篇内容应该能帮你把脑子里那团浆糊理清楚。我会尽量少用公式,多用类比和实测视角,把"为什么"讲透。
2. H.266/VVC 到底把压缩率从哪儿抠出来的
2.1 混合编码框架没变,变的是每个环节的"颗粒度"
很多人一听 H.266 就觉得是全新一代黑科技,其实它的骨架和 H.264、H.265 是一脉相承的,都是"预测 + 变换 + 量化 + 熵编码"这套混合框架。真正变化的是每个环节的精细程度。你可以把它理解成同样是做木工,H.264 用的是粗砂纸,H.265 换成了中砂纸,H.266 直接上了细砂纸加抛光机——工具逻辑没变,但打磨的粒度细了一个量级。
最直观的一个变化是块划分。H.265 最大编码单元是 64×64,H.266 直接干到 128×128,而且划分方式从四叉树扩展成了四叉树加二叉树加三叉树的混合结构。这意味着什么?意味着编码器在面对不同纹理区域时,可以更灵活地选择"切多大、怎么切"。平坦区域用大块省码率,复杂边缘用细长的块贴合形状,减少残差能量。这个改动听起来朴素,但对压缩率的贡献非常实在。
另一个关键点是帧内预测方向。H.265 有 35 种预测模式,H.266 增加到了 65 种,还引入了矩阵加权帧内预测(MIP)和跨分量线性模型(CCLM)。方向多了,意味着对斜向纹理的预测更准,残差更小。这就像你画素描时,排线的角度越多,越能贴合物体的真实走向,不用反复修改。
2.2 变换和熵编码的"精细化"才是隐藏的码率杀手
变换环节,H.266 引入了多变换选择(MTS)和低频不可分离变换(LFNST)。MTS 允许在 DCT-II 之外选用 DST-VII 和 DCT-VIII,针对不同统计特性的残差块做适配。LFNST 则是在变换后再做一次不可分离的二次变换,专门压缩低频系数之间的相关性。这两个工具叠加起来,在低码率场景下的增益相当明显。
熵编码方面,H.266 用的还是 CABAC 的改进版,但上下文建模更细,二值化方案也做了优化。这部分普通开发者感知不强,但它对最终码率的贡献往往被低估。我实测过一组 1080p 的测试序列,在同等主观质量下,H.266 相比 H.265 能省 30% 到 40% 的码率,这个数字和标准组织公布的数据基本吻合。注意,这是"同等主观质量",不是同等 PSNR,后者往往更夸张。
2.3 复杂度代价:省下来的码率是用算力换的
这里必须泼一盆冷水。H.266 的编码复杂度相比 H.265 大概翻了 5 到 10 倍,解码复杂度也翻了 2 倍左右。这个代价不是闹着玩的。我拿一台 16 核的机器跑 VTM(H.266 的参考软件)编码一段 1080p 视频,速度慢到让人怀疑人生,基本没法用于实时场景。实际生产中大家用的是 x266、VVenc 这类优化实现,速度快很多,但依然比 H.265 的 x265 慢一大截。
所以 H.266 的"先进"是有前提的:它适合那些编码一次、播放无数次的场景,比如点播平台的片库转码、蓝光碟片压制。对于直播、视频会议这种对延迟和算力极度敏感的场景,H.266 目前的性价比并不高。这个判断很重要,因为它直接决定了你在架构里该把它放在哪个位置。
3. 神经编码的"先进"是另一个维度的先进
3.1 端到端学习到底改变了什么
神经编码最根本的不同,在于它不再依赖人工设计的预测、变换模块,而是用一个神经网络直接把像素映射成潜在表示,再熵编码成码流。解码端反过来,从码流重建潜在表示,再生成像素。整个流程是端到端联合优化的,损失函数里同时包含码率和失真两项。
这个范式的魅力在于:传统 Codec 里那些"手工调参"的环节,比如块划分决策、预测模式选择、量化步长分配,在神经编码里都变成了网络自己学出来的隐式策略。你不需要告诉它"这里该用 65 种预测模式中的哪一种",它自己在高维空间里找到了更优的表示方式。这就像传统方法是给一个工匠一套固定工具让他选,神经编码是直接让工匠自己长出一双手。
3.2 论文里的 RD 曲线为什么那么好看
如果你翻过神经编码的论文,会发现它们的 RD 曲线经常把 H.266 压在下面,尤其是在低码率区间。这确实是真的,但有几个前提必须说清楚。
第一,这些结果通常是在特定数据集上、特定码率点上、用特定的感知质量指标测出来的。换一个数据集,或者换成 PSNR 这种传统指标,优势可能就没那么明显。第二,神经编码的"码率"计算方式有时和传统 Codec 不完全可比,比如潜在表示的熵建模方式不同,实际封装成标准码流后的开销容易被忽略。第三,也是最关键的,论文里的模型往往是针对测试内容分布训练过的,泛化到完全没见过的内容类型时,性能会打折扣。
我不是说神经编码的成果是假的,恰恰相反,它在某些场景下的增益是实打实的。但作为工程人员,你得学会区分"论文条件下的先进"和"生产环境下的先进",这两者之间隔着一条很宽的河。
3.3 解码端的算力黑洞和硬件适配难题
神经编码目前最大的工程障碍在解码端。传统 Codec 的解码器可以做成专用硬件,手机、电视、机顶盒里都有现成的解码芯片,功耗低、成本低、速度快。神经编码的解码需要跑神经网络推理,虽然模型可以压缩、可以量化,但依然需要通用算力,而且不同模型的算子差异大,很难做成统一的硬件加速单元。
我做过一个粗略的估算:一段 1080p 视频用神经编码方案解码,在中端 GPU 上大概能跑到实时,但在手机端就很吃力,功耗和发热都是问题。而 H.266 的解码,一旦有硬件支持,功耗可以低到忽略不计。这个差距在移动端和嵌入式场景里是决定性的。
还有一个容易被忽视的点:神经编码目前没有统一标准。每家公司的模型结构、训练方式、码流格式都不一样,这意味着你用了 A 家的编码器,就必须用 A 家的解码器,生态是封闭的。而 H.266 是国际标准,只要符合标准,任何厂商的编解码器都能互通。这个差异在商业上的影响,比技术指标本身还大。
4. 把两条路线放在同一张桌子上比
4.1 压缩效率、复杂度、兼容性的三角权衡
任何编码方案都逃不开一个三角:压缩效率、计算复杂度、生态兼容性。你最多同时占两样,很难三样全占。H.266 占的是压缩效率和兼容性,代价是复杂度;神经编码占的是压缩效率和潜在的低复杂度解码(注意是潜在),代价是兼容性。
| 维度 | H.266/VVC | 神经编码 |
|---|---|---|
| 压缩效率 | 比 H.265 省 30%-40% 码率 | 特定条件下可超过 H.266 |
| 编码复杂度 | 极高,是 H.265 的 5-10 倍 | 训练成本高,推理成本中等 |
| 解码复杂度 | 中等,有硬件加速潜力 | 较高,依赖通用算力 |
| 标准化程度 | 国际标准,生态成熟 | 无统一标准,各家封闭 |
| 硬件支持 | 已有芯片规划 | 基本没有专用硬件 |
| 适用场景 | 点播、片库、广播 | 实验性、特定垂直场景 |
这张表不是要分出高下,而是想说明:选型从来不是选"最先进"的,而是选"最合适"的。你的场景更看重什么,答案就往哪边偏。
4.2 为什么"谁更先进"是个伪命题
回到标题那个问题:神经编码和 H.266 到底谁更先进?我的答案是,这个问题本身问错了。它们不是同一赛道上的两个选手,而是两种不同的技术哲学。H.266 是在既有框架里把工程优化做到极致,神经编码是在探索一条全新的范式。前者是"把已知的路修得更宽",后者是"看看有没有别的路"。
真正有价值的问法应该是:在我的具体场景下,哪个方案的投入产出比更高?如果你的场景是海量片库转码,对兼容性要求高,那 H.266 是当下最务实的选择。如果你在做前沿研究,或者某个垂直场景对压缩率极度敏感且能接受封闭生态,那神经编码值得投入。把这两个问题混为一谈,就会陷入无休止的争论。
4.3 一个容易被忽略的中间地带
其实还有一条路很多人没注意:用神经网络去增强传统 Codec。比如用深度学习做环路滤波、做后处理增强、做码率分配优化。这类方案不改变码流格式,兼容现有生态,但能实打实提升质量或降低码率。我试过用神经网络后处理去增强 H.266 的解码输出,在低码率下主观质量提升很明显,而且解码端只需要额外跑一个小网络,成本可控。
这个中间地带的价值在于,它绕开了"非此即彼"的对立,把神经网络的表达能力嫁接到成熟的标准框架上。对于大多数工程团队来说,这可能是比"全面转向神经编码"更现实的一条路。
5. 如果现在就要做技术选型,我会怎么判断
5.1 先问三个问题,再谈技术
我在做任何编码选型之前,会先逼自己回答三个问题。第一,我的内容是编码一次播放多次,还是实时产生实时消费?前者可以容忍高编码复杂度,后者不行。第二,我的播放端是什么设备?如果是手机、电视这类有硬件解码器的设备,标准 Codec 几乎是唯一选择。第三,我的团队有没有能力维护一套非标准的编解码链路?神经编码意味着你要自己搞定模型部署、版本管理、跨端一致性,这个成本很多人低估了。
这三个问题回答完,选型方向基本就清楚了。技术指标只是最后的微调依据,而不是决策的起点。
5.2 实测数据比论文曲线靠谱
我强烈建议任何做选型的人,都拿自己的真实内容跑一遍对比测试。不要用标准测试序列,那些序列是被优化过的,参考价值有限。用你自己业务里最有代表性的视频,覆盖不同分辨率、不同运动强度、不同纹理复杂度,然后在同等主观质量下比较码率和速度。
我自己的测试习惯是:准备三组内容,一组是静态访谈类,一组是高速运动类,一组是屏幕内容类。这三类对编码器的压力完全不同,能暴露出很多纸面上看不到的问题。比如屏幕内容里大量的锐利边缘和文字,H.266 的帧内预测优势就特别明显,而神经编码在这类内容上有时反而不稳定。
5.3 别忽视专利和授权这笔账
这一点特别容易被技术人员忽略。H.266 背后有一堆专利池,商用是要交授权费的,而且不同专利池的费率结构不一样,算下来成本不低。神经编码目前专利格局还不清晰,但这不代表没有风险,反而可能因为标准缺失导致未来的授权谈判更混乱。
如果你的产品要大规模商用,这笔账必须提前算。我见过一些团队技术选型做得漂亮,最后卡在授权成本上,被迫回退方案,非常被动。
6. 实操中那些文档不会告诉你的坑
6.1 H.266 编码器的参数调优是个体力活
VTM 参考软件的默认配置基本没法直接用,速度慢到不可接受。实际生产要用 VVenc 或 x266,但这两个的文档都不算友好,很多参数需要自己摸索。我踩过的一个坑是:默认的 GOP 结构和帧类型决策在特定内容上会导致码率波动很大,需要手动调整关键帧间隔和时域分层结构。
还有一个经验:H.266 的率失真优化(RDO)特别吃 CPU,如果你把预设开到最慢档,编码速度会掉到每秒几帧。实际生产中要在质量和速度之间找平衡点,我一般会从中等预设开始,针对性地开启对当前内容增益最大的工具,而不是无脑全开。
6.2 神经编码的模型泛化问题比想象中严重
我拿一个在公开数据集上表现很好的神经编码模型,去编码我们业务里的实际内容,结果 RD 性能掉了一大截。原因是训练数据的分布和真实内容差异太大。这个问题在学术论文里很少被强调,但在工程里是致命的。
解决办法要么是用自己的数据做微调,要么是选一个泛化性更好的模型架构。但微调需要标注数据、需要算力、需要时间,这些都是成本。所以如果你打算用神经编码,一定要预留足够的模型适配周期,别指望拿来就能用。
6.3 跨端一致性是个隐形炸弹
传统 Codec 因为标准化做得好,不同厂商、不同平台的解码结果基本一致。神经编码就没这个保障了。同一个模型,在不同 GPU、不同推理框架、甚至不同版本的驱动上,输出都可能有细微差异。这些差异在像素层面可能只有一两个数值,但累积起来可能导致主观质量波动,甚至触发质量监控告警。
我在一个项目里就遇到过这个问题:同一个码流,在开发机上解码正常,到了某些用户设备上就出现轻微的色彩偏移。排查了很久才发现是推理框架的浮点精度差异导致的。这类问题在标准 Codec 里几乎不会出现,但在神经编码里是常态。
7. 我个人的判断和后续观察方向
说点掏心窝子的判断。短期内,也就是未来两三年,H.266 及其优化实现会是点播和广播领域的主流升级方向,尤其是随着硬件解码支持逐步铺开,它的落地速度会加快。神经编码在这个窗口期内,更可能以"增强模块"的形式嵌入现有管线,而不是全面替代。
中期看,神经编码最大的变数是标准化。如果未来出现一个被广泛接受的神经编码标准,解决了互操作性和硬件加速问题,那格局可能会变。但标准化的过程通常很慢,涉及的利益方太多,不会一蹴而就。
我目前重点在观察两个方向。一个是神经编码的轻量化,看看能不能把解码算力压到移动端可接受的范围。另一个是混合方案,也就是用神经网络增强传统 Codec 的各个环节,这条路兼容性最好,落地阻力最小。至于纯端到端的神经编码什么时候能真正大规模商用,我的态度是谨慎乐观,但不会把宝全押上去。
技术选型这件事,最怕的就是被"先进"两个字绑架。先进不等于合适,论文里的领先不等于生产里的领先。把场景想清楚,把成本算明白,把风险留足余量,比追逐任何一个热门名词都重要。我在这个领域踩过的坑告诉我,最后能跑通的方案,往往不是最炫的那个,而是最稳的那个。