系列导读 | 实时控屏与编解码优化架构总览
在构建现代远程协助与屏幕共享系统(如易连系统中的 易连助手 和 易连友助)时,如何保障在复杂网络环境下的超低延迟与极致画质,是衡量系统技术实力的核心标尺。
为了在公网环境下实现低于 150 毫秒的端到端延迟(Sub-150ms End-to-End Latency),并且能够在手机、电脑、网页等多端之间流畅交互,易连系统摒弃了传统的 CPU 截图及慢速的软件编码方案,打通了一条全平台对齐的硬件加速、零拷贝(Zero-Copy)H.264/AVC 实时视频流管线。
1. 核心架构设计
在整个远程协助会话中,设备被定义为两种核心角色:
- 受控端(Controlled Role / 发送端):负责捕获本地屏幕像素、通过 GPU 进行零拷贝编码,并利用紧凑的二进制协议打包发送。
- 控制端(Controller Role / 接收端):负责接收并分发流数据、利用硬件解码芯片实时解码,最终实现零拷贝的高性能渲染呈现。
这两者通过底层的多路复用(Yamux)安全通道进行双向低时延数据通信。整体架构管线设计如下:
受控端 (Controlled / 发送端) 控制端 (Controller / 接收端)
┌─────────────────────────────────────┐ ┌─────────────────────────────────────┐
│ GPU 硬件采集 (SCK/DXGI/etc.) │ │ 网络传输与分发 (Yamux 隧道) │
└──────────────────┬──────────────────┘ └──────────────────┬──────────────────┘
│ GPU 物理纹理 (显存) │ H.264 原始字节流
▼ ▼
┌─────────────────────────────────────┐ ┌─────────────────────────────────────┐
│ 零拷贝 H.264 硬件编码 (GPU 压缩) │ │ 硬件 H.264 解码器 (Surface直显) │
└──────────────────┬──────────────────┘ └──────────────────┬──────────────────┘
│ Annex-B + CSD (SPS/PPS) │ GPU 渲染纹理
▼ ▼
┌─────────────────────────────────────┐ ┌─────────────────────────────────────┐
│ 紧凑二进制信封封装 (Compact Raw) │ ──Yamux Mux──▶│ GPU 零拷贝预览与画面渲染 │
└─────────────────────────────────────┘ └─────────────────────────────────────┘2. 核心技术难题与优化维度
为了将端到端延迟压缩到物理极限,我们在各平台实现中集中攻克了以下技术硬骨头:
- 物理级别的零拷贝(Zero-Copy Pipeline): 从屏幕采集(如 iOS ReplayKit、Android MediaProjection、Windows DXGI 等)到编码器输入,像素数据始终保留在 GPU 物理显存中,避免昂贵的 CPU-GPU 拷贝与像素转换。
- 色彩空间一致性(Color Matrix Calibration): 解决跨平台(特别是 iOS 到 Android/Web)流传输时,由于 Rec. 709 与 BT.601 转换矩阵偏差引发的画面偏绿或偏粉问题。
- 动态自适应调优(Telemetry-Driven Adaptation): 建立以 100ms 为周期的本地遥测反馈机制,在不重置编码器(无闪屏)的前提下,动态热调码率与 FPS,保证弱网下的流畅生存能力。
- 按需 IDR 同步(On-Demand Keyframe Control): 抛弃高带宽消耗的固定关键帧,通过接收端丢包检测与发送端按需 IDR 强制生成信令,实现瞬时消减花屏拖影。
- 网页端高性能播放(MSE 与 WebCodecs fallback): 在 Wails 控制端,首选通过 MSE(Media Source Extensions)硬件加速播放 fMP4 视频流;并在不支持或使用自定义二进制裸流时,平滑退避到后台 Web Worker 中的 WebCodecs 硬件解码与 OffscreenCanvas GPU 离屏渲染。
3. 技术深挖系列指南
为了让开发者与技术发烧友能够深入理解这套架构的底层细节,我们将其整理为 5 篇深度技术文章:
- 系列一 | iOS 实时屏幕采集与 VideoToolbox 硬件编码深度解析
- 深度解构 iOS Broadcast Extension 跨进程设计,如何在 50MB 内存生存线下完成 ReplayKit 采集与 VideoToolbox 硬件硬编,以及色彩空间纠偏。
- 系列二 | Android 实时屏幕共享与 MediaCodec 硬件编解码优化实践
- 解析 Android MediaProjection 结合 OpenGL ES 动态缩放旋转的 OES 外部纹理设计,以及 MediaCodec Surface 表面输入硬编解码与热重置恢复方案。
- 系列三 | 跨平台桌面端(Windows/macOS/Linux)高性能屏幕采集与编解码架构
- 剖析 Windows DXGI/Media Foundation 零拷贝 MFT 编码、macOS ScreenCaptureKit 架构、Linux PipeWire 共享 DMA-BUF 以及跨平台 COM/VA-API 动态加载(dlopen)的高兼容性设计。
- 系列四 | Web 前端 WebCodecs 硬件加速解码与 OffscreenCanvas 超低延迟渲染
- 深入 Web 端的低延迟音视频流通道设计,讲解以 MSE 硬件加速为首选播放管线,并以 WebCodecs 与 OffscreenCanvas 离屏渲染作为退避链路的架构设计。
- 系列五 | 弱网环境下的低延迟音视频流传输与码率自适应优化
- 探讨传输层的核心调优,涵盖动态码率/帧率在线热更新、遥测闭环、按需 IDR 关键帧信令控制以及
compact_binary_v1极简二进制封装设计。
- 探讨传输层的核心调优,涵盖动态码率/帧率在线热更新、遥测闭环、按需 IDR 关键帧信令控制以及
低延迟音视频技术的发展日新月异,易连系统正基于这些底层优化,为用户提供极其稳定、流畅的跨端连接体验。您可以点击上述链接阅读各个平台的具体实现方案。
