VTM 是“H.266/VVC 标准的官方参考软件”视频分析,入门教程,它存在的唯一目的就是“让学术界和工业界在同一把尺子上做实验

法国女足世界杯 6284

一句话:H.266(VVC,Versatile Video Coding)是 2020 年 7 月定稿的最新一代国际视频编码标准,目标是"在同等画质下再省一半码率",把 4K/8K、HDR、VR、直播等场景的成本打下来。

🥇 与上一代对比(H.265 → H.266)

维度

H.265/HEVC

H.266/VVC

压缩率

比 H.264 省 40 %

再省 30--50 %

4K 示例

90 min UHD ≈ 10 GB

≈ 5 GB

最大分辨率

8K

16K

新特性

10-bit、HDR

10-bit、HDR、360°、屏幕内容、低延迟 RTC

复杂度

编码 ↑10×,解码 ↑2×

🛠 关键技术提升

QT+MTT 划分

64×64 CTU 可继续拆成 4×4,支持二叉/三叉/四叉混合树,边缘细节更省码率。

130 种帧内预测方向

相比 H.265 的 67 种,纹理预测更精准。

仿射运动补偿 & 双向光流

运动矢量不再是平移,可描述旋转、缩放。

色度双树

亮度、色度可独立划分,进一步节省色度码率。

📺 三大落地场景

场景

核心诉求

H.266 作用

点播/OTT

CDN 带宽成本

节省 50 % 流量,直接降账单

直播 & RTC

低延迟 + 画质

同码率画质↑,同画质码率↓

云游戏/VR

8K/360° 高码流

16K 上限,支持 360° 专用工具

📈 生态现状(2025-07)

环节

支持度

代表方案

硬件解码

早期

Intel Lunar Lake、芯原 Hantro VC9000D、国科微 GK9501C

软件解码

已成熟

FFmpeg 6.1+、VLC 3.0 nightly、Chrome 正在实验

内容侧

抖音/腾讯视频

已逐步上线 H.266 档位

专利/授权

仍存在不确定性,但授权池数量减少,成本有望低于 HEVC

🎯 一句话总结

H.266 = "视频界的 5G":用一半流量传同样画质,为 4K/8K、HDR、VR、云游戏铺平道路;只是硬件刚起步,软件先行,2025-2026 年将迎来全面商用。

一句话:VTM 是"H.266/VVC 标准的官方参考软件",它存在的唯一目的就是"让学术界和工业界在同一把尺子上做实验";你跑通它的意义,可以拆成 5 个关键词:可重复、可比性、发论文、做产品、找工作。

🎯 1. 可重复(Reproducible)

同一套源码、同一 cfg,全世界任何人都能复现 bit-rate / PSNR / BD-rate。

会议/期刊审稿人默认"你用 VTM 的结果≈可信"。

🎯 2. 可比性(Benchmark)

场景

需要比什么?

VTM 提供

新算法论文

BD-rate ↓ 1% 算创新

官方 Anchor

芯片竞标

4K@60 fps 所需频率/面积

参考码流

标准提案

工具开关 A vs B

统一 cfg & QP

🎯 3. 发论文 / 做比赛

CVPR/ICIP/PCS... 只要涉及视频编码,必须有 VTM 基线。

MSU 2024 Codec Cup 、CLIC 压缩挑战赛 均以 VTM 为 Anchor。

把 VTM 改一行,提出 "Fast QTBT" 、"Neural Loop Filter",就能灌水/拿奖。

🎯 4. 做产品(Prototype)

落地环节

如何利用 VTM

算法预研

先跑 VTM,看 BD-rate 是否 >5%,再投入 RTL

标准合规

用 VTM 生成的码流验证自家解码器能否通过

专利撰写

在 VTM patch 里插入钩子,生成 claim 证据

🎯 5. 找工作 / 实习

面试题:

"请解释 VTM 里 Intra Sub-Partition 的决策流程"

"如何给 VTM 加一个新的 fast search 算法?"

能答上来=直接发 offer。

实习 JD:

"熟悉 VTM 框架,有修改经验优先"。

🎯 一句话总结

VTM 就像机器学习里的 PyTorch------你可以不用它做最终产品,但做实验、写论文、谈性能时,它是唯一公认的"基准尺"。跑通它,等于拿到了进入 H.266 世界的"门票"。

下面我把原文的 7 000 余字拆成一张「小白也能 30 分钟跑通」的 Checklist,按步骤打钩即可。所有超链接已经验证(2025-07-20)可直接点开下载。你只需准备 Win10/11 + VS2019/2022 + CMake≥3.15。

✅ 0. 总览图

复制代码

源码 → 编译 → 编码 → 解码 → 统计 → 可视化

VTM ─┬─ EncoderApp.exe ─┬─ .bin

├─ DecoderApp.exe ─┼─ .yuv

└─ DecoderAnalyserApp ─┴─ .vtmbmsstats → YUView 看 CU 划分

✅ 1. 一次性工具包下载

内容

地址

备注

VTM 源码

VVCSoftware_VTM

建议选 VTM-10.0 分支

测试序列

Derf's Collection

推荐 akiyo_qcif.y4m(体积小)

CMake

cmake-3.27-win64.msi

安装时务必勾选 "Add to PATH"

YUView 可视化

YUView Releases

直接下 .exe 安装版

y4m→yuv 工具

mencoder.exe(CSDN镜像)

放到 PATH 或工作目录

✅ 2. 编译 VTM(≈5 分钟)

解压 VTM 到 固定路径(路径里不要有空格和中文)。

打开 CMake-GUI :

复制代码

Where is the source code: D:/VTM

Where to build the binaries: D:/VTM/build

Configure → Generator: Visual Studio 17 2022 (x64)

勾选 ENABLE_TRACING 与 K0149_BLOCK_STATISTICS → Generate。

完成后用 VS 打开 D:/VTM/build/NextSoftware.sln → 顶部 Release x64 → Build → Build Solution。

成功后在 D:/VTM/build/bin/vs17/msvc-19.3/x86_64/release/ 得到

EncoderApp.exe / DecoderApp.exe / DecoderAnalyserApp.exe。

✅ 3. 准备测试序列(≈2 分钟)

下载 akiyo_qcif.y4m(11 MB)。

转码 y4m→yuv (Win 终端):

复制代码

mencoder akiyo_qcif.y4m -ovc raw -of rawvideo -vf format=i420 -o akiyo_qcif.yuv

得到 akiyo_qcif.yuv(QCIF 352×288,300 帧)。

✅ 4. 第一次编码(Intra,≈3 分钟)

在 release 目录放 3 个文件:

EncoderApp.exe

encoder_intra_vtm.cfg(从 cfg/ 拷贝)

akiyo_qcif.yuv

修改 encoder_intra_vtm.cfg 最开头的 File I/O:

复制代码

InputFile : akiyo_qcif.yuv

InputBitDepth : 8

FrameRate : 30

FrameSkip : 0

SourceWidth : 352

SourceHeight : 288

FramesToBeEncoded : 30 # 先跑 30 帧省时间

Level : 3.1

BitstreamFile : akiyo_intra.bin

ReconFile : akiyo_rec.yuv

QP : 32

运行编码(终端或 VS 调试均可):

复制代码

EncoderApp.exe -c encoder_intra_vtm.cfg >out.txt

看到 Total Time 和 PSNR (Y/U/V) 即成功。

✅ 5. 解码验证(≈1 分钟)

复制代码

DecoderApp.exe -b akiyo_intra.bin -o deco.yuv

用 YUView 打开 deco.yuv → 设置 352×288 4:2:0 8-bit → 能正常播放即解码无误。

✅ 6. 生成 CU 划分统计(关键步骤,≈2 分钟)

确保 步骤 2 中 ENABLE_TRACING=1,否则重新编译。

运行分析器:

复制代码

DecoderAnalyserApp.exe ^

-b akiyo_intra.bin ^

--TraceFile=akiyo.vtmbmsstats ^

--TraceRule="D_BLOCK_STATISTICS_ALL:poc>=0"

得到 akiyo.vtmbmsstats(≈1-3 MB)。

✅ 7. YUView 可视化(≈2 分钟)

打开 YUView → File → Add Item → Overlay Item。

依次拖入:

akiyo_rec.yuv(视频层)

akiyo.vtmbmsstats(统计层)

选中统计层 → Overlay Properties → 勾选要看的元素:

CU split depth

PU/TU partition

QP

Intra mode 等

鼠标滚轮缩放,右侧时间轴逐帧查看,截图即可放入论文。

✅ 8. 常见坑速查

现象

原因

解决

EncoderApp 启动即崩溃

cfg 路径/分辨率填错

检查 InputFile & SourceWidth/Height

控制台中文乱码

Win 终端编码

用 PowerShell 或 >out.txt 再打开

YUView 不显示 CU 网格

忘记 ENABLE_TRACING

重开 CMake 勾选后重新编译

y4m 转 yuv 花屏

分辨率/帧率不匹配

用 ffprobe akiyo_qcif.y4m 查看参数

✅ 9. 一键脚本(可选)

把下面存成 run.bat 放在 release 目录,双击即可重复实验:

bat

复制代码

@echo off

set cfg=encoder_intra_vtm.cfg

set seq=akiyo_qcif.yuv

EncoderApp.exe -c %cfg% >out.txt

DecoderApp.exe -b akiyo_intra.bin -o deco.yuv

DecoderAnalyserApp.exe -b akiyo_intra.bin --TraceFile=akiyo.vtmbmsstats --TraceRule="D_BLOCK_STATISTICS_ALL:poc>=0"

echo 完成!请用 YUView 打开 akiyo_rec.yuv + akiyo.vtmbmsstats

pause

照着 9 个步骤全部打钩,你就完成了 VTM 下载→编译→编码→解码→CU 可视化 的完整闭环。下一步想跑 RA/LD 配置 或 自定义序列,只需换 cfg 和序列即可,流程完全一样。