WebRTC 屏幕共享在 Native 端通过DesktopCapture系列接口实现,支持三种模式:全屏(多个显示器)、单窗口、用户自定义区域。本文从采集原理、平台实现细节、跨平台 C++ 接口封装到完整的工程代码实例进行系统展开,并结合源码解析与高频面试问题,帮助读者建立端到端的屏幕共享技术体系。1. 采集原理与架构分层1.1 为什么屏幕共享要单独设计采集模块?与摄像头采集不同,屏幕内容具有以下特点,决定了需要独立的采集与编码链路:分辨率极高:现代显示器常见 2K/4K,远超摄像头 720p/1080p,对帧内存和编码器压力巨大。帧率要求低:屏幕内容以静态文字、PPT 为主,不需要 30fps,5fps 即可满足;但翻页时需要瞬间提速到 15~30fps。图像特征不同:大面积色块、锐利文字边缘,与摄像头的自然纹理差异很大。VP8/H264 默认针对摄像头优化,若直接用于屏幕会出现色带、文字模糊,因此编码器提供kVideoCodecModeScreensharing模式,启用针对屏幕的量化矩阵、宏块策略与码率控制。安全权限特殊:屏幕采集涉及隐私,各操作系统均有独立的权限申请机制(Windows UAC、macOS screen-capture、Linux Portal)。