MLVC:微软开源神经网络视频编解码器,比 H.265 节省 75% 码率

本文由AI从英文翻译而来。 阅读原文

2026年7月24日,微软在其 Linux and Open Source 博客上宣布,将 ML Video Codec(MLVC)开源。代码托管在 github.com/microsoft/mlvc,采用 MIT 许可证,同时提供训练好的权重、训练脚本,以及面向不同 NPU 的转换工具。

柱状图对比在 360p 下获得同等画质所需的码率:H.264 为 1000 kbps,H.265 约为 500 kbps,微软的神经网络编解码器 MLVC 为 122 kbps。数据来自基于 Video Conferencing Dataset 的 P.910 主观测试。

支撑这次发布的论文 MLVC: Multi-platform Learned Video Codec for Real-World Deployment 于一个月前发表在 arXiv 上。

这不是在实验室 GPU 上跑过一次的研究演示。MLVC 是微软研究院自 2021 年起持续发表的 DCVC 系列的产品化版本,微软表示它已经在 Microsoft Teams 的点对点通话中逐步上线,配有线上遥测和 A/B 测试,并在硬件或网络跟不上时回退到传统编解码器。

这个宣传数字大到值得认真核实一遍,本文做的正是这件事:这些数字本身、它们实际测量的是什么、仓库里究竟有什么,以及这一切今年会不会触及流媒体链路。

如果你想先看简短版本,我们在流媒体词汇表中维护了一条关于 什么是 MLVC 的简明定义。

官方公布的数字

微软自己给出的对比,在主观画质相当的前提下:

分辨率相对 H.264 节省的码率相对 H.265 节省的码率
360p87.8%75.5%
540p82.7%65.4%

换成具体说法更好记:一路 360p、30 fps 的通话,用 H.264 需要 1 Mbps,用 MLVC 大约只需 122 kbps。差不多是八分之一的比特量,实时完成,跑在笔记本的 NPU 上。

接下来是附加条件,这部分相当关键。

这是人打的分,不是 PSNR

这些百分比基于 MOS,来自由真人观看者为片段打分的 ITU-T P.910 主观测试。素材是微软同样自建并开源的 Video Conferencing Dataset。也就是说,这是摄像头前的人物画面,360p 和 540p,靠肉眼判断的结果。

如果改用 PSNR,在论文更广的测试集上测量同一个编解码器,BD-rate 收益会落到 52% 附近。仍然是很大的数字,但不是 87.8%。

参照系是市面上最弱的 H.265

比较对象是 Intel Quick Sync 上的硬件 H.265,而不是用慢速预设精细调校过的 x265。受会议延迟约束的硬件编码器,代表的是 H.265 能力的下限,而非上限。

此外,论文中没有任何与 AV1 或 VVC 的对比。作者解释了原因:VTM 和 ECM 没有量产硬件实现,因此没有可以在实时条件下比较的对象,故予以排除。作为研究决定说得过去,但这也意味着还没有人把 MLVC 与现代 AV1 编码器放在一起展示过。

真正的成就是确定性,而非压缩率

这部分被码率数字盖住了,但从工程角度看更有意思。

在编码效率上,神经网络编解码器已经领先传统编解码器有一段时间了。它们之所以无法部署,是因为无法在与编码端不同的机器上可靠地解码。

熵编码要求编码器和解码器计算出完全一致的概率。把同一个网络分别跑在 Apple Neural Engine 和 Qualcomm Hexagon 上,浮点结果并不会一致:编译器选择的算子内核不同,算子融合方式不同,舍入方式也不同。于是码流会解码成一堆乱码。

论文给出了具体数字。不加约束的 DCVC-RT,在编码器与解码器位于同一平台时,BD-rate 改善约 69.6%。跨平台时,它的 BD-rate 是无穷大,这是"视频根本解不出来"的委婉说法。

他们是怎么解决的

MLVC 不再指望两端碰巧算出一样的结果。它通过 hyperprior 显式传输熵模型的尺度参数,让两端从码流中读取同一组数值,而不是各自计算。

围绕这一点,团队还移除了其他所有会产生分歧的因素。特殊激活函数被去掉,改用带 ReGLU 门控的 ReLU 和 LeakyReLU。INT8 量化被直接否决,因为 INT8 卷积在不同厂商之间不可复现,而较旧的苹果芯片本来就是用 FP16 模拟它的。整个模型以 FP16 运行。

这种克制是要付出实际压缩性能代价的。以感知目标训练的 DCVC-RT 能达到 81.9%,而 MLVC 是 75.5%。微软让出了约六个百分点的 BD-rate,换来一个能在自己并不拥有的硬件上解码的编解码器。

对任何真正把视频推上线过的人来说,这显然是划算的交换,而这也是学习型编解码器第一次做成这笔交换。

仓库里究竟有什么

值得直接去看一眼,因为仓库讲的故事和公告稍有出入。

仓库创建于 2026 年 1 月 28 日,此后六个月里除了一份许可证、一个 README 雏形和微软标准的治理文件之外别无他物。真正的代码是 7 月 22 日以一次名为 "Hello MLVC" 的提交进来的,推送者是论文第一作者 Tanel Pärnamaa。截至撰稿时,仓库共有 8 次提交、189 个星标、10 个复刻,且没有任何打了标签的发行版。

所以这是一次性投放的代码,而不是在公开场合开发出来的项目。这不是批评,只是应有的预期。四个未关闭的 issue 全部是针对 transformers、jupyterlab 和 cryptography 的 Dependabot 更新。迄今唯一被合入的外部贡献,是一行修复:在 EntropyCoder.h 中加入 #include <cstdint>,好让 C++ 熵编码器能在 GCC 13 及更新的 Clang 上构建。虽小,却是个好迹象:微软之外的人在几天内就尝试编译,而微软合入了这个补丁。

你能得到什么

  • 四个检查点。1830 万参数的完整 MLVC 和 540 万参数的轻量版 MLVC-S,各自提供 PSNR 优化版和感知优化版。感知版使用 LPIPS 和人脸分割掩膜训练,这直接说明了它们是为什么场景打造的。
  • 完整的训练流水线。涵盖图像模型和视频模型,通过 YAML 配置驱动。微软还记录了训练数据的采集方式,这一点比多数开源发布做得更多。
  • 导出工具。可在固定输入尺寸下把模型转换为面向苹果的 CoreML、面向 Intel 与 OpenVINO 的 ONNX,以及面向高通的 QNN。支持的运行时包括 CPU 与 GPU 上的 ONNX Runtime、ONNX Runtime QNN、OpenVINO 和 Windows ML。
  • C++ 实现的 rANS 熵编码器。位于 packages/msrtc_rans,附带 Python 绑定,另有可计算 BD-rate、MS-SSIM、LPIPS、VIF 和 DeQA 的基准测试工具。

你得不到的是一个可以链接进应用的 C++ 编解码器库。微软表示会在后续版本中提供。目前可用的接口是 Python,安装需要 Python 3.12 或 3.13 以及 uv。

帧率实际落在什么水平

速度才是这件事有意思的原因,所以分辨率阶梯很重要。论文给出的编码吞吐如下:

分辨率MLVC,Apple M3 ProMLVC,三家厂商均值MLVC-S,Apple M3 Pro
360p129.5 fps103 fps未公布
540p65.7 fps49 fps未公布
720p33.8 fps未公布83.8 fps
1080p15.6 fps未公布39.5 fps

各档位上,解码都比编码慢几帧每秒。在 Intel Lunar Lake 上,1080p 的数字是 10.5 fps;受测的三家厂商分别是苹果 M3 与 M4、Intel Lunar Lake 和高通骁龙 X Elite。

如实总结:真正可交付的是三家厂商上的 540p 30 fps,且 NPU 占用不到一半。实时 1080p 只在精简模型上、只在苹果平台上、只在单向条件下成立。论文还指出,在单台设备上同时进行 1080p 及以上的编码与解码仍是难题,而双向通话需要的恰恰就是这个。

微软的路线图也照此推进:先稳定 540p 并改善抗丢包能力,再做 1080p 和更广泛的流媒体场景。

为什么还不能把它放进流媒体码率阶梯

在流媒体领域,决定一个编解码器命运的从来不是压缩效率,而是解码器。

我们专门写过一篇文章,讲 HEVC 为何没能成为它被许诺的那个未来,原因在于授权与设备支持,而不是编码工具。AV1 也是在 手机开始内置硬件解码器之后,才对实际部署产生意义。

格式就是权重本身

MLVC 面对的是这个问题更严苛的版本。不存在 MLVC 码流标准,因为训练好的权重就是格式。一路码流只能被持有编码时那个完全相同的模型、并且运行得足够接近以复现其算术的设备解出来。

没有一致性码流,没有 MIME 类型。没有封装方案,没有 DRM 方案,智能电视、机顶盒和浏览器里也没有任何东西能播放它。你的 CDN 可以把它送出去,而另一端没有任何东西能打开它。

那些内容不是你的内容

亮眼的数字来自低分辨率的静态人头画面,模型还借助人脸 ROI 掩膜在人脸上训练过。体育、胶片颗粒、快速摇镜和大幅运动,恰恰是传统编解码器靠启发式规则挣回身价的场景,而论文对此并未作出任何主张。

论文甚至量化了一个弱点:长期参考机制在剧烈场景切换时会让 BD-rate 损失约 2 个百分点,需要在部署阶段用镜头切换检测来缓解。而一部电影,大部分就是场景切换。

而且没人测过功耗

这是论文自己在结尾列出的局限。作者写道,实时性已经解决,因此功耗是下一个战场。在电池供电的设备上,为一部两小时电影的每一帧都在 NPU 上跑一次神经网络,和一个已经优化了十年的固定功能解码器完全不是一回事。

今天它在哪些场景说得通

凡是两端都是你自己掌控的计算机,且瓶颈在网络而非芯片的地方。

首先是视频会议,这也是 Teams 成为首发载体的原因。其次是上行链路较差的回传、远程制作、无人机、机器人和监控链路,以及云游戏或远程渲染。微软在公告中明确就上述所有方向征求协助,与流媒体和点播并列,同时也欢迎扩大 NPU 覆盖面的平台移植。

如果你正在现代硬件上做实时点对点的东西,现在就值得花一个下午。如果你在运营 OTT 服务,那还不到时候。

编解码器从业者真正该警惕的地方

不是那 75%,而是斜率。

微软声称,MLVC 的编码效率会随模型容量和训练算力一起提升,正如过去几年其他所有机器学习系统那样。

传统编解码器每一代大约提升 30% 到 50%,而一代需要将近十年的标准化工作,随后是数年等待硬件普及,再随后是围绕专利池的争论。如果一个学习型编解码器每次投入更多算力就会继续变好,而且跑在本来就无处不在的 NPU 上,那么这场竞争的形态就变了。

它采用 MIT 许可证,悄然移除了当年拖垮 HEVC 的另一个因素。而且它可以退化成一个普通的工程问题:你发布一个模型版本,像协商编解码器那样协商它,对端跑不动就回退。

这些今年都不会发生。从"在我的 M3 上能跑 540p"到"能在某人客厅那台五年前的电视上播放",这中间的距离,是每一个编解码器都花了十五年才走完的距离。不过,压缩技术上一次有趣到值得读一篇论文,已经是挺久以前的事了,而这一篇值得花上一个小时。

那该怎么办

你的编码阶梯不需要任何改动。继续用 H.264 覆盖广泛设备,在设备支持的地方上 HEVC 和 AV1,等到下面三件事发生时再重新评估:

  • 完整模型上的实时 1080p,而不只是苹果平台上的 MLVC-S。
  • 一个真正能链接进产品的 C++ 库。
  • 微软自家产品之外出现任何解码器。

有兴趣的话可以把仓库克隆下来,因为无论你将来是否会推出神经网络编解码器,它的训练流水线和跨平台分析都很有启发。关于 INT8 量化为何会在不同厂商间产生分歧的那份附录,把一个通常需要长篇解释的问题写得相当凝练。

常见问题

MLVC 可以免费使用吗?
可以。微软以 MIT 许可证发布,涵盖模型源码、训练好的权重和训练脚本。它不附带专利池,这是与 HEVC 的一个重要区别。

我能把 MLVC 推流到智能电视或浏览器吗?
不能。解码需要一台能运行该神经网络的设备,并且要有与编码时完全相同的模型。目前没有任何电视、机顶盒、手机或浏览器带有 MLVC 解码器,也不存在可供它们实现的码流标准。

MLVC 实际能省多少带宽?
微软给出的数据是:在 360p 下,相比 H.264 码率降低 87.8%,相比硬件 H.265 降低 75.5%,依据是 ITU-T P.910 下真人观看者的评分。若在更广的测试集上以 PSNR 衡量,节省幅度接近 52%。两个数字都是在视频会议内容上与硬件编码器的对比。

MLVC 需要什么硬件?
需要 NPU。微软测试了 M3 与 M4 上的 Apple Neural Engine、Intel Lunar Lake 和高通骁龙 X Elite,并称在三者上都实现了实时 540p 30 fps,且 NPU 占用不到一半。

MLVC 比 AV1 更好吗?
没有人公布过这个对比。论文只与 H.264 和 H.265 做了测量,排除了 AV1、VVC 和 ECM,理由是它们没有可在实时条件下比较的量产硬件实现。

MLVC 和 DCVC 有什么区别?
DCVC 是微软研究院自 2021 年起发表的神经网络编解码器系列。MLVC 是其产品化版本,以大约六个百分点的压缩效率,换来在不同厂商 NPU 上可靠解码的能力。

需要帮忙判断这对你的技术栈意味着什么吗?

编解码器一旦选错代价高昂,而且大部分成本要到几年后才在设备支持和授权上显现,而不是体现在码率上。我们的流媒体与广播专家大规模落地过编解码器、编码阶梯和分发链路,你可以就自己真正面临的问题直接向他们提出。