# 视频编码硬件加速实现指导文档 本文档供 AI 编码助手参考,用于在现有 C++ 远程控制程序中实现 H.264 硬件编码 + AV1 编码路径。 --- ## 1. 项目背景 ### 1.1 当前状态 - C++ Windows 远程控制程序 - 已实现 H.264 编码,基于 x264 软编(`CX264Encoder`),preset = `ultrafast + zerolatency` - 视频管线:桌面捕获(RGB/BGRA)→ 编码 → 网络传输 → 客户端解码显示 - 当前架构:每个主控端连接对应一个独立编码器实例 - **分发模式**:单 exe,FFmpeg 静态链接 ### 1.2 目标 分两阶段渐进推进,**始终保留 x264 软编作为兜底**: **阶段一(H.264 硬编加速)** - 新增 H.264 硬编(NVENC / QSV / AMF),按 GPU 能力探测优先走硬编 - x264 软编在无 GPU / 虚拟机 / 远程桌面会话等环境下兜底 - 浏览器解码零兼容性风险(H.264 全平台原生支持) **阶段二(AV1 路径)** - 新增 AV1 硬编(`av1_nvenc` / `av1_qsv` / `av1_amf`) - 客户端浏览器握手时声明 AV1 能力 - 双方都能用就走 AV1,否则回落 H.264 **最终产物仍为单 exe**,体积增量可接受 6–10 MB。 ### 1.3 关键决策记录 #### 1.3.1 为什么跳过 HEVC 经评估,HEVC 在本项目目标场景下没有独占价值: | 维度 | 现状 | |---|---| | **浏览器解码** | Firefox 完全不支持;Chrome/Edge 需 Win11 + 商店付费的 HEVC Video Extensions | | **专利授权** | 商用涉及 MPEG-LA / Access Advance / Velos Media 三个专利池 | | **替代方案** | AV1 压缩效率更高、AOMedia 免专利、浏览器原生支持广 | HEVC 编码端硬件普及度好(几乎所有 2015+ GPU)这个优势,被解码端短板完全抵消。 #### 1.3.2 为什么 H.264 硬编先于 AV1 - **AV1 硬编硬件门槛高**:仅 NVIDIA RTX 40+ / AMD RX 7000+ / Intel Arc 才有 - **"多机混杂"场景**下大部分编码端 GPU 没有 AV1 硬编 - **H.264 硬编**(NVENC/QSV/AMF)几乎所有现代 GPU 都有,覆盖面广 - **客户端浏览器解 H.264** 是零兼容性问题,跨浏览器/跨平台 100% 通用 H.264 硬编是先把"地板抬起来",AV1 是"在新硬件上的天花板"。 ### 1.4 设计约束 - **平台**:仅 Windows(macOS/Linux 未来另行设计) - **GPU 不确定**:NVIDIA / AMD / Intel / 无独显 / 虚拟机无 GPU 都需支持 - **延迟要求**:不敏感(不追求极致低延迟) - **并发模型**:通常 1 对 1,少数 1 对多(每个连接独立编码器) - **客户端**:浏览器(WebCodecs 优先,`