ESP-WebRTC 方案
概述
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
解决方案和演示
openai_demo:ESP32 作为 OpenAI 服务的客户端。
doorbell_demo:使用 AppRTC 信令的智能门铃。
doorbell_local:支持行人 AI 检测的本地门铃,无需信令服务器。
video_call:通过数据通道进行视频通话。
whip_demo:将 ESP32 媒体流推送到 WHIP 服务器。
serverless_mqtt:无需服务器的连接建立。
livekit client:允许连接到 LiveKit 云。
openAI video assistant:通过语音控制启用图像分析。
其他资源
WebRTC 介绍 - 高性能浏览器网络
WebRTC for the Curious - 深入了解 WebRTC 内部机制