espwebrtcsolution

August 13, 2026 ยท View on GitHub

Introduction

This repository provides everything needed to build a WebRTC application. It includes the esp_webrtc core code along with its dependent components, such as:

  • esp_peer: WebRTC PeerConnection realization
  • esp_capture: For capturing media data (see esp_capture on the component registry)
  • av_render: For playing media data

Additionally, the repository contains demo applications under solutions/ that show how to use esp_webrtc and related media stacks. Each solution has its own README with hardware requirements and build instructions.

Solutions

Learning and APIs

FolderDescription
peer_demoMinimal example of building a WebRTC app from scratch using the esp_peer API.

Cloud, streaming, and SFU integration

FolderDescription
openai_demoReal-time WebRTC session to an OpenAI Realtime server with a custom signaling path.
whip_demoPublishes AV to a server using WHIP (esp_webrtc).
kvs_masterAmazon Kinesis Video Streams (MASTER): receives SDP offers from viewers and answers over KVS signaling.
kms_demoPublisher to Kurento Media Server; includes a browser viewer for the stream.
janus_demoJanus VideoRoom publisher over Janus HTTP signaling.

Product-style demos

FolderDescription
doorbell_demoDoorbell with AppRTC-style WebSocket signaling: remote control, live video, two-way audio.
doorbell_localLocal doorbell without an external signaling server (ESP as signaling); includes real-time pedestrian detection.
videocall_demoVideo-call style app using esp_webrtc data channel.
local_jpeg_streamLocal JPEG-over-data-channel stream to browser (no external signaling); includes UT harness.

Bridges and RTSP

FolderDescription
webrtc_usb_cameraWebRTC-to-USB UVC bridge: browser sends media over WebRTC; host sees the device as a USB webcam (video path; see demo README).
rtsp_demoRTSP server or pusher on the device for LAN streaming (complements WebRTC/media examples).
rtmp_demoRTMP pusher that captures device audio/video and publishes to an RTMP server.