屏幕内容编码工具最早在 HEVC-SCC(2016 年)中正式引入,根本动机是传统视频编码标准无法高效处理计算机生成的屏幕内容。核心驱动力是 2010 年代屏幕共享、远程协作等应用的爆发式增长。HEVC-SCC 通过 IBC、调色板模式、ACT、AMVR 四大工具,利用屏幕内容的无噪声、锐利边缘、有限颜色、空间重复、离散运动等特征,实现了相比自然视频编码2倍以上的压缩效率提升。这些工具随后被 AV1 和 VVC 继承并标准化。
|
标准 |
SCC 支持情况 |
|
HEVC-SCC (2016) |
首次引入,作为扩展(非强制) |
|
AV1 (2018) |
将 SCC 工具纳入基础标准(非扩展),支持 IBC、调色板模式、变换跳过 |
|
VVC/H.266 (2020) |
继承并增强 SCC 工具,新增 TSRC(变换跳过残差编码)、BDPCM 等 |
值得注意的是,AV1 将 SCC 作为标准内建功能而非扩展,这意味着所有 AV1 解码器都必须支持屏幕内容解码,推动了 SCC 在移动端(如骁龙 8 Gen 2、天玑 9000)的硬件解码支持。
屏幕共享场景主要采集电脑如笔记本,PC。分辨率1080p起步,主流PC已经默认4k分辨率,如果按自然视频编码发送码率太高,画质也难以保障。那么引入SCC屏幕编码工具是强需求。通过上述分析,AV1编码器是最优选择。Av1编解码器有四大开源工程,即aom、svt-av1、rav1e和dav1d。它们均出自AOMedia(开放媒体联盟)组织。 Svt-av1比较特殊,单独介绍如下:
一、SVT-AV1 项目的历史与组织关系
起源:Intel + Netflix 的独立项目
SVT-AV1 最初 并非 AOMedia 官方项目,而是 Intel 与 Netflix 于 2018 年 8 月开始合作开发的独立编码器项目。
Netflix 在 2020 年的技术博客中明确说明:"Intel 和 Netflix 自 2018 年 8 月以来一直在 SVT-AV1 编码器和解码器框架上展开合作。"
被 AOMedia 正式收养(2020 年 8 月)
2020 年 8 月,AOMedia 宣布成立 Software Implementation Working Group(SIWG,软件实现工作组),正式将 SVT-AV1 收养为 AOMedia 的官方 AV1 编码器实现。
这一转变的关键信息:
- 代码仓库迁移:从 github.com/OpenVisualCloud/SVT-AV1 迁移到 github.com/AOMediaCodec/SVT-AV1(后改为 GitLab)
- SIWG 联合主席:Facebook 的 Ioannis Katsavounidis 和 Tencent 的 Xiang Li
- 软件协调员:Intel 的 Hassene Tmar
- 使命:"创建在各种应用中提供出色视频压缩的 AV1 编码器实现,消除计算复杂度权衡"
二、AOMedia 生态中的三大 AV1 编码器对比
AOMedia 生态中有三个主要的 AV1 开源编码器实现,定位各不相同:
|
维度 |
libaom |
SVT-AV1 |
rav1e |
|
开发主体 |
AOMedia官方(Google主导) |
Intel + Netflix → AOMedia SIWG |
Xiph/Mozilla 社区(Rust) |
|
定位 |
AV1 参考实现(Reference) |
生产级高性能编码器 |
安全、可审计的替代实现 |
|
语言 |
C/C++ |
C + 汇编 |
Rust |
|
编码速度 |
慢(~2-15 fps @ 1080p) |
最快(~50-120 fps @ 1080p) |
中等(~15-60 fps) |
|
压缩效率 |
最高(基准) |
接近 libaom(差距 < 2%) |
略低于 libaom |
|
标准符合性 |
黄金标准 |
完全合规 |
完全合规 |
|
配置灵活性 |
极高(研究用) |
中等(生产用) |
较低 |
|
主要场景 |
研究、AV2 开发、最高质量 VOD |
VOD 批量转码、实时编码 |
安全敏感场景、Web 集成 |
|
实时编码 |
勉强(cpu-used 7-8) |
原生支持(Preset 8-12) |
有限支持 |
|
解码器 |
有(参考解码器) |
已移除(v2.1.1+) |
无 |
三、libaom 与 SVT-AV1 的核心技术差异
1. 架构哲学
|
libaom |
SVT-AV1 |
|
递归块划分(RDO 递归决策) |
多阶段流水线(由粗到精筛选) |
|
单帧处理为主,Tile 级并行 |
三维并行:帧级 + 片级(Segment)+ 任务级 |
|
为质量优化(RDO 搜索最彻底) |
为速度优化(预设档位覆盖极广) |
|
适合离线高质量编码 |
适合大规模批量转码和直播 |
SVT-AV1 的核心架构是 Scalable Video Technology(可扩展视频技术),专为 Intel Xeon 多核处理器设计,通过将每帧拆分为多个 Segment 并行处理,在不损失质量的前提下最大化计算资源利用率。
2. Preset 档位设计
- libaom:-cpu-used 0-8,共 9 档,速度跨度约 187 倍,但最快档仍难以实时
- SVT-AV1:-preset -2 到 13,共 16 档,覆盖从极致质量到实时直播的全场景
SVT-AV1 的 Preset 10-12 已可实现实时编码,这是 libaom 无法做到的。
3. 线程模型
- libaom:Tile 级并行 + Row-MT(行级多线程),线程扩展性有限
- SVT-AV1:Segment-based 并行 + 帧级并行 + 任务流水线,在 8 线程以上仍有良好扩展性
有趣的是,SVT-AV1 的测试表明,超过 8 线程后性价比递减——从 1 线程到 8 线程的吞吐量提升与云 CPU 成本增长基本匹配,但超过 8 线程后成本效益下降。
关键要点:
对于生产环境的选择建议:VOD 批量转码和直播场景首选 SVT-AV1,需要最高压缩效率或进行编解码研究时用 libaom,安全敏感场景考虑 rav1e,解码端统一使用 dav1d。
为什么我们只在scc场景下才选择av1编码呢?svt-av1经过多年优化,从preset上也已经覆盖到实时场景。但是对比x264和openh264在同等压缩率下复杂度没有优势,而解码器生态还不成熟,而scc场景首先通过优化scc编码工具,不需要前处后处理(包括内部的LPfliter,CDEF等)复杂度可控,压缩率提升1倍。其次屏幕共享的帧率刷新更低,通常低于15fps,有甚者分享刷新1~5fps. Svt-av1 scc实测4kp15不到1Mbps,已经满足清晰度需求。对于生产端和接收端的cpu性能都没有压力。
四、SVT-AV1的SCC优化
1.屏幕内容编码(SCC)强化
SVT-AV1 的 SCC 优化弱于传统视频,需要如下算法优化:
- 调色板模式(Palette Mode):UI/文本内容压缩效率极高,但搜索开销大,需快速决策
- IBC(Intra Block Copy):屏幕内容中大量重复图案,IBC 可替代 inter 预测
- 跳过模式(Skip Mode):静态区域直接复制参考块,几乎零码率
其次各算法模块的simd指令集优化加速。支持 x86 (SSE2/SSSE3/AVX2/AVX-512)、ARM (NEON)
2. SVT-AV1自身常规流程优化。
早期Svt-av1的解码器(24年6月移除)与dav1d解码性能对比有明显差距。Scc编码器除编码流程外还包含自解码流程。
1) 编码器双向操作(正向变换 + 量化 + 反量化 + 逆变换)
正如我们上文所言。 Svt-av1的实现有一个问题,正反变换有重复的二次转置问题。需要相应的修改扫描与反扫描矩阵,移除正反变换中的二次转置操作。
2) Dav1d解码器汇编模块的移植。Intrapred,mc,tx/itx只需要少量代码重构,可以复用dav1d的深度指令集汇编优化。比较复杂的LPFilter和cdef等模块可以屏蔽掉,或者后期进行PGO编译优化。
3) SAD/SATD重计算复用
4) 内存访问模式重构
借鉴 dav1d 的 cache-friendly 设计:
- 减少编码器各阶段间的内存拷贝(Zero-Copy)
- 优化参考帧的内存布局,提高运动估计时的缓存命中率
- 压缩上下文数据结构,减少 L2/L3 缓存占用
通过以上优化,1080p scc双线程编码能轻松达到200fps,码率降到200~300bps.
![瑞萨单片机开发教程[三十一] RTC 时钟实验-171主机测评](https://www.171host.com/wp-content/uploads/2026/08/20260804034049-6a715f418c1db-220x150.png)