Skip to main content
Espressif Logo

Welcome to ESP32 USB Stream

ESP32_USB_STREAM is an Arduino library designed to support USB UVC + UAC host driver for ESP32-S2/ESP32-S3. It enables multimedia streaming from USB devices, supporting up to one UVC camera, one microphone, and one speaker simultaneously.

Key Features

USB Video (UVC)

Stream video from USB cameras with configurable resolution and frame rates

USB Audio (UAC)

Capture microphone input and output to speakers with full control

Concurrent Streaming

Support for simultaneous video and audio streaming from multiple devices

Stream Control

Suspend, resume, and dynamically configure streams at runtime

Hardware Support

ESP32_USB_STREAM is compatible with ESP32-S2 and ESP32-S3 SoCs only. These chips include the necessary USB host hardware.

Quick Start

1

Install the Library

Install ESP32_USB_STREAM through the Arduino Library Manager or download from GitHub.
# Arduino Library Manager
Search for "ESP32_USB_STREAM" in Arduino IDE
View detailed installation instructions →
2

Connect Your Hardware

Wire your ESP32-S2/S3 board with USB host capability and connect a USB device.See hardware requirements →
3

Run Your First Example

Start with a simple UVC camera streaming example to capture video frames.
#include "USB_STREAM.h"

USB_STREAM *usb = new USB_STREAM();
usb->uvcConfiguration(FRAME_RESOLUTION_ANY, FRAME_RESOLUTION_ANY, 
                      FRAME_INTERVAL_FPS_15, 55 * 1024, 
                      _xferBufferA, _xferBufferB, 
                      55 * 1024, _frameBuffer);
usb->start();
Explore the quickstart guide →

What You Can Build

USB Camera

Capture video frames from USB cameras

Audio Recording

Record audio from USB microphones

Audio Playback

Play audio through USB speakers

UVC Camera Setup

Configure video streaming from USB cameras with custom resolutions and frame rates

UAC Audio Setup

Set up microphone and speaker streaming with volume control

Memory Management

Optimize buffer allocation and memory usage for streaming

Troubleshooting

Common issues and solutions for USB streaming

API Reference

Browse the complete API documentation to integrate USB streaming into your projects.

Core API

USB_STREAM class and lifecycle methods

UVC Methods

Video streaming configuration and control

UAC Methods

Audio streaming configuration and control

Community & Support

GitHub Repository

View source code, report issues, and contribute to the project

Component Documentation

Read the underlying usb_stream component documentation

Build docs developers (and LLMs) love