This is the official ESP32 SDK for Stream Video, a platform for building apps with video and audio calling support. The repository includes an SDK and examples on how to use Stream Video on ESP32 devices. The supported devices are ESP32-S3 (example provided) and ESP32-P4.
Stream allows developers to rapidly deploy scalable feeds, chat messaging and video with an industry leading 99.999% uptime SLA guarantee.
With Stream's video components, you can use our SDK to build in-app video calling, audio rooms, audio calls, or live streaming. The best place to get started is with our docs.
All calls run on Stream's network of edge servers around the world, ensuring optimal latency and reliability.
- Publish video and audio — Send H.264 video and Opus audio to a Stream call. The SDK currently supports publishing only; subscribing to remote participants' audio/video is not yet supported.
- Stream SFU — Connect to Stream's Selective Forwarding Unit over WebRTC for signaling and media.
- Built-in capture — Camera and microphone capture, encoding, and publishing are handled automatically by the SDK.
- ESP-IDF v5.4+
- ESP32-S3 or ESP32-P4
Fetched automatically via Component Manager:
espressif/esp_peer— WebRTCespressif/esp_capture— camera/micespressif/esp_video_codec— H.264 encoderespressif/esp_audio_codec— Opus encoderespressif/esp_websocket_client— signalingespressif/cjson— JSONlivekit/nanopb— protobuf
-
Install ESP-IDF v5.4+ and set target (e.g.
./install.sh esp32s3). See examples/minimal/BUILD_INSTRUCTIONS.md for full setup (macOS, Linux, Windows). -
Add the SDK to your project — in your project root
idf_component.yml:dependencies: stream-video: git: "https://github.com/GetStream/stream-video-esp32.git" path: "components/stream-video" version: "v0.1.0"
Then in your main component's
CMakeLists.txtaddstream-videotoREQUIRES.
Full steps for a new app: docs/using_sdk_in_your_app.md. -
Run the minimal example:
cd examples/minimal idf.py set-target esp32s3 idf.py menuconfig idf.py build flash monitorBefore building, configure two things in
idf.py menuconfig:- WiFi — Go to Stream Video Example and set your WiFi SSID and password.
- Board selection — Choose the correct board for your hardware (this sets the right camera pin map and audio codec). See the supported boards list in the example README.
Configure Stream credentials (environment, user, call) in
main/main.c. For a menuconfig snapshot and options reference, see BUILD_INSTRUCTIONS.md. Details: examples/minimal/README.md.The minimal example automatically joins this call. You can open it from a web browser to see the camera feed of the ESP32 device.
Important: ESP32 devices have weak WiFi receivers. For smooth testing, we recommend being close to the router.
WiFi and tokens: use menuconfig or sdkconfig.defaults; do not commit sdkconfig or secrets.
Stream is free for most side and hobby projects. To qualify, your project/company needs to have < 5 team members and < $10k in monthly revenue. Makers get $100 in monthly credit for video for free.
We've closed a $38 million Series B funding round in 2021 and we keep actively growing. Our APIs are used by more than a billion end-users, and you'll have a chance to make a huge impact on the product within a team of the strongest engineers all over the world. Check out our current openings and apply via Stream's website.