本页为个人业余学习实验的图文存档,站内不提供在线试用、设备连接、源码或安装包下载。

Lab

浏览器与安卓设备低延迟互通实验

个人自研低延迟交互实验项目,基于 WebRTC / QUIC 实现浏览器与安卓设备互通,仅用于本人音视频传输技术验证,无对外商用交付能力。

<50ms
局域网 glass-to-glass P50
<80ms
家庭宽带 glass-to-glass P50
2通道
实验对比:WebRTC 与 QUIC
≥30次
单场景有效采样次数

以上为本人自有设备在本地环境下的实验读数,样本量有限,仅用于个人学习记录,不代表任何网络环境下的可用性。

实验背景

这个业余项目想搞清楚的是:一台放在自己家里的安卓设备,画面要经过采集、编码、传输、解码、渲染才能出现在同一网络内的浏览器上,这条链路上的时间到底花在哪里。要同时面对跨 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;排除首帧建连、连通性收敛前与主动重协商时段。

这些数字不能说明什么:样本全部来自本人自有设备与自家网络, 不代表任意网络环境下可复现,也不构成任何服务承诺或可用性保证。

后续学习方向

这套实验验证的其实是「一台设备与一个浏览器之间」的双向低延迟通信。同样的思路还可以继续验证多路并发下的带宽分配、弱网下的码率自适应策略,以及更省内存的嵌入式实现——都属于个人业余学习范围,没有对外交付计划。

涉及技术

AndroidMediaCodecWebRTCQUICcoturnC++TypeScript

声明:本页内容为个人业余学习记录,不提供在线试用、设备连接、源码下载、安装包或任何形式的技术支持与商业服务。