欢迎光临
我们一直在努力

RTC中屏幕共享svt-av1:scc的优化实践

         屏幕内容编码工具最早在 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 线程后成本效益下降。

关键要点:

  • AOMedia 负责 AV1 标准规范、专利池管理和生态推广
  • libaom 是 AOMedia 官方维护的参考实现,承担"算法正确性黄金标准"和 AV2 研究平台的角色
  • SVT-AV1 最初由 Intel + Netflix 独立开发,2020 年被 AOMedia SIWG 收养为官方生产级编码器,专注速度-质量平衡和实时编码
  • rav1e 是社区驱动的 Rust 实现,强调安全性和可审计性
  • dav1d(VideoLAN)是独立的最快 AV1 软件解码器,不属于 AOMedia 官方项目
  • 对于生产环境的选择建议: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.

    赞(0)
    未经允许不得转载:171主机测评 » RTC中屏幕共享svt-av1:scc的优化实践
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址