VTM 是“H.266/VVC 标准的官方参考软件”视频分析,入门教程,它存在的唯一目的就是“让学术界和工业界在同一把尺子上做实验
一句话: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
目录,双击即可重复实验:
@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 和序列即可,流程完全一样。