简介

乐鑫正式宣布亚马逊 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 部署。它们通常运行在双芯片开发板上,例如: 

  1. ESP32-P4 Function EV Board (ESP32-P4 + ESP32-C6)
  2. 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 可以进入睡眠,从而实现电池供电摄像头应用。 

示例入门指南

我们提供两类示例: 

即将推出的功能

  • 支持更多开发板
  • 基于 AI 与视觉能力的活动检测
  • 视频片段存储
  • 本地存储
  • 云端存储(RainMaker 云)
  • 多客户端并发观看
  • 双向音视频(适用于视频门铃等场景) 

欢迎尝试该方案,并与我们分享您的应用成果。我们也非常期待您的反馈。 

注意

从 3.4.0 版本开始,摄像头支持已提供私有部署版本。如果您想了解更多,欢迎联系乐鑫商务团队

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐