ESP-WebRTC 方案

[English]

概述

WebRTC 被广泛用于 实时低延迟 通信,最初为点对点 (P2P) 设计,如今是视频会议、流媒体和物联网应用的基础。相比 MQTT 或 WebSocket,WebRTC 对实时媒体传输和 NAT 穿越有更好的优化。ICE(交互式连接建立)是 WebRTC 的关键机制,通过 STUN 和 TURN 服务器实现跨 NAT 和防火墙的可靠连接,ESP-WebRTC 方案对 ICE 的支持进一步简化了 STUN/TURN 配置。

协议对比

特性 / 协议

WebRTC

MQTT

WebSocket

通信模式

点对点 (通过 STUN/TURN/ICE 建立)

基于代理的发布/订阅

客户端-服务器

媒体支持

✅ 音频、视频、数据

❌ 仅消息 (二进制/文本)

❌ 仅消息 (二进制/文本)

延迟

超低延迟 (可能小于 100 ms)

低延迟 (取决于代理,约为 10 至 100 ms)

低延迟 (约为几十毫秒)

可靠性

可靠 + 不可靠通道 (SCTP)

QoS 等级 (0,1,2)

仅 TCP 可靠

NAT 穿越

✅ 内置 STUN/TURN 支持

❌ 仅直接 TCP

❌ 仅直接 TCP

安全性

DTLS/SRTP (强制加密)

TLS (可选,MQTTS)

TLS (可选,WSS)

可扩展性

多方需要 SFU/MCU

使用代理具有很好的可扩展性

服务器集群/负载均衡

最佳用例

实时通话、会议、游戏、P2P 文件共享

IoT 遥测、设备控制、传感器数据

聊天、实时更新、仪表板

应用领域

WebRTC 在嵌入式和物联网系统中可实现 低延迟通信,同时支持 媒体传输,如 IP 摄像头和视频会议,也可通过 WebRTC 数据通道传输任意类型的数据。

用户支持

协议层用户

对于只关注连接层的用户,可使用 esp_peer 提供的轻量级 对等连接实现。其特点包括:

  • 具备完整的 ICE 支持(STUN + TURN)

  • 快速建立优化,优化启动时间

  • 最小依赖,仅需 libsrtp

  • 低资源消耗(约 60 KB/连接)

  • 低延迟(ESP32 与手机之间约 260 ms)

  • 核心协议从零实现,更易扩展

详细文档 esp_peer

最佳实践参考 peer_demo

应用层用户

在协议层的基础上,应用层用户可以基于 ESP-WebRTC 提供的连接能力实现音视频采集、渲染和信令处理,可快速构建原型,仅需替换信令即可。主要组件包括:

  • esp_capture:从硬件捕获编码的音频/视频

  • av_render:音视频播放

  • 信令:支持 AppRTC、WHIP、OpenAI

解决方案和演示

其他资源