简介
乐鑫正式宣布亚马逊 KVS WebRTC SDK 已完成在 ESP-IDF 上的移植与适配,为乐鑫微控制器带来企业级 WebRTC 视频流能力。该版本针对 ESP32 系列设备进行了深度优化,使设备能够实现实时音视频流传输,并支持 STUN/TURN ICE 服务器、双向音视频通信、数据通道 (Data Channel) 以及通过 WebRTC 向 KVS 进行视频推流 (WebRTC ingestion) 等功能。
乐鑫的适配不仅仅是简单的移植,还引入了多项创新特性,例如面向电池供电设备的 WebRTC Split Mode 架构、多项内存占用优化,以及一套简化的 API,使开发者能够更轻松地将 WebRTC 集成到产品中。
为了展示该 SDK 的能力,乐鑫还发布了 ESP RainMaker Camera ------ 一款基于 KVS WebRTC SDK 构建的量产级摄像头解决方案。ESP RainMaker 已广泛应用于各类 IoT 设备,而随着摄像头支持的加入,开发者现在可以以更低成本构建安全、低延迟的视频流解决方案。
适用于乐鑫产品的亚马逊 KVS WebRTC SDK
适用于乐鑫产品的亚马逊 KVS WebRTC SDK 是亚马逊 WebRTC SDK 的完整 ESP-IDF 适配版本,并针对资源受限的乐鑫微控制器进行了专门优化。该移植版本使 ESP32 设备能够实现具备企业级能力的实时音视频流传输。
关键适配与增强特性
内存占用优化
ESP 版本针对微控制器部署场景引入了多项关键内存优化:
- 替代 WebSocket 客户端:可选择使用 esp_websocket_client 替代 libwebsockets,从而降低整体内存占用。
- 动态内存分配:默认情况下,KVS 为每条 signaling 消息静态分配约 20KB 的大型缓冲区。ESP 版本实现了动态内存分配策略,使所有消息能够在相同的内存占用范围内完成处理。
- SPIRAM 集成:通过修改内存分配 API,使其尽可能使用 SPIRAM(外部 RAM),从而保留宝贵的片上 SRAM 资源用于关键任务。
WebRTC Split Mode 架构
本次移植中最重要的创新之一是 WebRTC Split Mode 架构:
- 双设备架构:Split Mode 将 WebRTC 功能分布在两个处理器上:
- 媒体处理器(例如 ESP32-P4):负责视频 / 音频采集、编码以及流媒体传输
- 网络处理器(例如 ESP32-C6 或 ESP32-C5):负责网络连接以及与 AWS KVS 的 signaling 通信
- 功耗优化:在未进行流媒体传输时,媒体处理器可以进入深度睡眠模式,而网络处理器则在轻睡眠模式下保持网络连接
- 快速唤醒:共享的网络协议栈使设备在唤醒后能够立即获取 IP 地址,从而避免连接延迟
- 电池供电应用:该架构使摄像头设备能够在电池供电场景下运行,并显著降低整体功耗
具备智能默认配置的简化 API
该 SDK 提供了一套简化的高层 API,大幅降低配置复杂度。
这种架构允许开发者根据具体需求灵活组合组件,无论是构建简单的单设备方案,还是复杂的多设备系统。
部署架构
SDK 支持多种部署架构,每种架构都针对不同的应用场景进行了优化。
Split Mode --- 双芯片方案
例如:
- ESP32-P4 Function EV Board
- ESP32-P4-C5 Core Board

Standalone Mode
- 双芯片方案:例如 ESP32-P4 Function EV Board 搭配网络适配固件(参见 Option 2)
- 单芯片方案:例如 ESP32-S3-EYE(参见 Option 3)

乐鑫示例项目
KVS WebRTC SDK 的 ESP 移植版本包含多个完整示例,用于展示不同的部署场景。每个示例都展示了特定能力与应用场景。
示例对比
|-----------------|-----------|-----------------|---------------|--------|--------------|
| 示例 | Signaling | Peer Connection | 硬件 | 功耗模式 | 适用场景 |
| webrtc_classic/ | KVS | KVS | 单 ESP32 | 标准 | 学习与 AWS 集成 |
| esp_camera/ | AppRTC | KVS | 单 ESP32 | 标准 | 浏览器测试,无需 AWS |
| split_mode/ | | | | | 双芯片电池摄像头实现 |
| streaming_only/ | Bridge | KVS | ESP32-P4 | 支持深度睡眠 | 电池供电流媒体 |
| signaling_only/ | KVS | Bridge | ESP32-C6 / C5 | 轻睡眠 | 常在线连接 |
说明:streaming_only 与 signaling_only 需要成对使用,以实现 split mode 部署。它们通常运行在双芯片开发板上,例如:
- ESP32-P4 Function EV Board (ESP32-P4 + ESP32-C6)
- ESP32-P4-C5 Core Board (ESP32-P4 + ESP32-C5)
有关详细的配置步骤和 API 文档,请参阅 esp_port README 与 API_USAGE.md。
ESP RainMaker Camera ------ 量产级应用方案
ESP RainMaker Camera 展示了一个基于 KVS WebRTC SDK 构建的量产级摄像头方案。
该示例展示了如何将 SDK 的能力与 ESP RainMaker 设备管理生态结合,从而构建完整、安全的摄像头解决方案。
RainMaker Camera 如何使用 KVS SDK
RainMaker Camera 使用了 SDK 的多个关键能力:
- 简化 API:采用 SDK 的四行配置方式,并结合智能默认参数。
- Split Mode 架构:在电池供电部署中实现 split mode 架构。
- 凭证管理:将 RainMaker 提供的 AWS 凭证 API 与 SDK 的凭证回调机制集成。
- 可插拔接口:无缝使用 KVS signaling 与 peer connection 接口。
RainMaker Camera 组件
ESP RainMaker 包含三个主要组件:
- 云端后台 (Cloud Backend)
- 开源手机应用 (Android 与 iOS)
- 开源固件 SDK
摄像头支持已加入所有组件中,开发者无需额外开发即可直接使用。

RainMaker Camera 架构
RainMaker Camera 采用与 KVS WebRTC SDK 相同的部署架构,同时支持 Standalone Mode 与 Split Mode。Standalone Mode 可以:
- 在单芯片设备上运行(如 ESP32-S3-EYE)
- 或使用双芯片结构并搭配网络适配器
Split Mode 则将 signaling 与 streaming 分布在两个处理器上,以实现更高的功耗效率。上文 部分中的架构图展示了这些部署模式。
核心能力
ESP32-P4 **性能:**RainMaker Camera 充分利用 ESP32-P4 的处理能力,可实现 1080p@30fps 的音视频流传输。ESP32-P4 支持 MIPI-CSI 摄像头接口与硬件 H.264 编码,非常适合新一代联网摄像头应用。
电池供电运行: RainMaker Camera 是首个运行在微控制器上的支持电池供电的 WebRTC 摄像头方案。其工作方式如下:
- signaling 与 streaming 由两个芯片分别处理
- ESP32-P4 负责流媒体处理,并在空闲时进入深度睡眠
- ESP32-C6 或 ESP32-C5 在轻睡眠模式下保持网络连接
- 只有在请求视频流时两个设备才会被唤醒
- 视频流结束后设备重新进入睡眠,从而显著降低功耗
**安全与隐私:**该方案提供符合现代法规要求的安全与隐私保护机制,确保远程查看过程安全可靠。 RainMaker 可安全存储设备证书,并提供 API 获取用于 KVS signaling 连接的安全 Token。
开发者体验: 开发 RainMaker Camera 与开发其他 RainMaker 设备的体验基本一致。
开发者可以继续使用熟悉的 ESP-IDF 工作流程,只需增加摄像头支持即可。同时,signaling 与凭证管理由系统自动处理,无需开发者关心底层细节。
终端用户体验: 用户可通过 RainMaker App 完成设备配网,随后即可一键开启实时视频流。
安全能力由乐鑫硬件与 ESP-IDF 社区共同保障。
商业价值: 该方案提供了一个 低成本、完整功能的解决方案,能够加速原型开发并缩短产品上市时间,同时依托成熟的生态系统支持。
硬件选择指南
KVS WebRTC SDK ESP 版本支持多款 ESP32 开发板。 同一硬件可根据不同应用场景运行不同示例。
|------------------------|---------------|----------|------|---------|----------------|
| 开发板 | 视频能力 | 编码 | 兼容示例 | 功耗模式 | 适用场景 |
| ESP32-P4-Function EV | 1080p@30fps | 硬件 H.264 | 全部示例 | 标准 / 电池 | 量产级流媒体 |
| ESP32-P4-C5 Core Board | 1080p@30fps | 硬件 H.264 | 全部示例 | 标准 / 电池 | 高性能 5GHz Wi-Fi |
| ESP32-S3-EYE | QVGA@5--10FPS | 软件编码 | 部分示例 | 标准 | 开发与原型验证 |
硬件说明
- **ESP32-P4 Function EV Board:**量产级开发板,内置硬件 H.264 编码器。板上同时集成 ESP32-P4 与 ESP32-C6,可支持 standalone 或 split mode。
- ESP32-P4-C5 Core Board:与 Function EV Board 类似,但使用 ESP32-C5 作为网络处理器,支持 5 GHz Wi-Fi。
- **ESP32-S3-EYE:**内置摄像头与麦克风,适用于开发与测试。
重要说明
在双芯片开发板(ESP32-P4 Function EV 或 C5 Core Board)上使用 Standalone Mode 时,网络处理器(ESP32-C6 或 ESP32-C5)必须烧录 network_adapter 固件,作为 Wi-Fi Modem 使用,并透明地将网络流量转发给主处理器。
在 Split Mode 中:
- ESP32-P4 负责流媒体处理
- ESP32-C6 / C5 负责 signaling
当没有流媒体请求时,P4 可以进入睡眠,从而实现电池供电摄像头应用。
示例入门指南
我们提供两类示例:
- 亚马逊 KVS WebRTC SDK 示例:适用于已有或计划构建 AWS KVS 方案的开发者;
- ESP RainMaker Camera 示例:基于免费 RainMaker 云部署的端到端摄像头演示。
即将推出的功能
- 支持更多开发板
- 基于 AI 与视觉能力的活动检测
- 视频片段存储
- 本地存储
- 云端存储(RainMaker 云)
- 多客户端并发观看
- 双向音视频(适用于视频门铃等场景)
欢迎尝试该方案,并与我们分享您的应用成果。我们也非常期待您的反馈。
注意
从 3.4.0 版本 开始,摄像头支持已提供私有部署版本 。如果您想了解更多,欢迎联系乐鑫商务团队。