Lab
浏览器与安卓设备低延迟互通实验
个人自研低延迟交互实验项目,基于 WebRTC / QUIC 实现浏览器与安卓设备互通,仅用于本人音视频传输技术验证,无对外商用交付能力。
以上为本人自有设备在本地环境下的实验读数,样本量有限,仅用于个人学习记录,不代表任何网络环境下的可用性。
实验背景
这个业余项目想搞清楚的是:一台放在自己家里的安卓设备,画面要经过采集、编码、传输、解码、渲染才能出现在同一网络内的浏览器上,这条链路上的时间到底花在哪里。要同时面对跨 NAT 连通、弱网下的画质与卡顿取舍,以及不同传输协议的行为差异。
实现结构
- 采集端:安卓设备上的屏幕与音频采集、硬件编码、输入事件注入
- 信令端:设备登记、会话建立、信令交换
- 传输:WebRTC 与 QUIC 两条通道做对照,直连失败时经中继转发
- 接收端:浏览器侧解码与渲染
结构示意图。实验中媒体优先走端到端直连,只有直连失败时才走中继转发。
通道划分
实验里把不同类型的数据分到独立通道上,便于分别观察各自的延迟与丢包表现:
enum class ChannelId {
VIDEO = 0, // 视频帧
AUDIO = 1, // 音频帧
CONTROL = 2, // 控制消息
TOUCH = 11, // 触控事件
};
// QUIC 下每个通道映射到独立 stream:stream_id = channel_id * 4
// WebRTC 下 视频 / 音频走 RTP,其余走 DataChannel
实验数据
两种网络环境下的 glass-to-glass 延迟测量结果:
| 实验环境 | 链路 | 编码 | 有效采样 | P50 |
|---|---|---|---|---|
| 同一局域网 | 端到端直连 | H.264 | ≥30 次 | <50 ms |
| 家庭宽带出口 | 直连优先,必要时中继 | H.264 | ≥30 次 | <80 ms |
此处放置本人实验过程的截图与录屏静态素材,访客仅可查看图文,不提供任何在线操作入口。
测量口径
glass-to-glass 怎么定义、怎么采样
定义:安卓设备屏幕内容变化 → 浏览器可见对应帧的时间差,包含采集、编码、传输、解码与渲染;不含人工反应时间。
局域网:安卓设备与浏览器处于同一 LAN,媒体优先端到端直连,H.264 编码,分辨率取固定档位。
家庭宽带:安卓设备在家庭宽带出口,浏览器经运营商接入,编解码参数与局域网组保持一致,避免「换参数比延迟」。
采样:每个场景连续采集 ≥30 次有效样本,取 P50;排除首帧建连、连通性收敛前与主动重协商时段。
这些数字不能说明什么:样本全部来自本人自有设备与自家网络, 不代表任意网络环境下可复现,也不构成任何服务承诺或可用性保证。
后续学习方向
这套实验验证的其实是「一台设备与一个浏览器之间」的双向低延迟通信。同样的思路还可以继续验证多路并发下的带宽分配、弱网下的码率自适应策略,以及更省内存的嵌入式实现——都属于个人业余学习范围,没有对外交付计划。
涉及技术
声明:本页内容为个人业余学习记录,不提供在线试用、设备连接、源码下载、安装包或任何形式的技术支持与商业服务。