Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

esp-idf-video-streaming

Capture video from a USB camera using ESP-IDF.

This example demonstrates how to:

This example enumerates the attached camera descriptors, negotiates the selected resolution and FPS, and starts capturing video.

I based it on this official example.

Change from official example

  • Changed Network connection by example_connect to WiFi connection by handler.

  • Supported VideoStreaming format of UncompressedFormat.
    This will allow you to use Logitech C270n and Microsoft LifeCam.
    Conversion from UVC_FRAME_FORMAT_YUYV to JPEG used this.

  • Changed from TCP transmission to HTTP transmission.
    I base it on this.

Hardware Required

ESP32-S2/ESP32-S3

This example requires any ESP32-S2 or ESP32-S3 with external PSRAM and exposed USB connector attached to USB camera.
ESP module without external PSRAM will fail to initialize.
I used this board.
esp32-s3-1

Note for ESP32S2
In earlier versions of the ESP32-S2 chip, USB transfers can cause SPI data contamination (esp32s2>=ECO1 and esp32s3 do not have this bug).
Software workaround is here.

Stable power supply

USB cameras consume a lot of electricity.
If the power supplied to the USB port is insufficient, the camera will not operate and ESP32 resets.

USB Type-A Femail connector

USB connectors are available from AliExpress or eBay.
I used it by incorporating it into a Universal PCB.
USBConnector

We can buy this breakout on Ebay or AliExpress.
usb-conector-11 usb-conector-12

USB camera with UVC support

Here is a list of USB cameras that support UVC that work with FreeBSD.
From what I've researched, ESP-IDF has limited USB support.
For example, the Logitech C615 works with Linux, but not with ESP-IDF.
I tested with these cameras.

  • Logitech C270n -> Success
  • Logitech C615 -> Fail
  • Logitech QuickCam Pro 9000 -> Success
  • Microdia(Very old model) -> Success
  • Microdia MSI Starcam Racer -> Success
  • Microsoft LifeCam NX6000 -> Fail
  • Microsoft LifeCam Cinema -> Success
  • Microsoft LifeCam Studio -> Success
  • Microsoft LifeCam HD3000 -> Success
  • Microsoft LifeCam HD5000 -> Success
  • Microsoft LifeCam HD6000 for Notebooks -> Success

It is very hard to find a camera that works with ESP-IDF.
On this document says that these cameras work with ESP-IDF.

  • Logitech C980
  • CANYON CNE-CWC2

This issue may be resolved when the USB Host UVC class driver provided by ESP-IDF is updated.
Detail is here.

cameras

Software Required

ESP-IDF V5.0 or later.
ESP-IDF V4.4 release branch reached EOL in July 2024.

Wireing

USB camera connects via USB connector.
The USB port on the ESP32 development board does not function as a USB-HOST.

+---------+  +-------------+  +----------+
|ESP BOARD|==|USB CONNECTOR|==|USB CAMERA|
+---------+  +-------------+  +----------+
ESP BOARD          USB CONNECTOR (type A)
                         +--+
5V        -------------> | || VCC
[GPIO19]  -------------> | || D-
[GPIO20]  -------------> | || D+
GND       -------------> | || GND
                         +--+

USBConnector-2

Installation

git clone https://github.com/nopnop2002/esp-idf-video-streaming
cd esp-idf-video-streaming
idf.py set-target {esp32s2/esp32s3}
idf.py menuconfig
idf.py flash monitor

Configuration

config-main

config-app-1

Some cameras need to change frame size, frame rate and frame format.
config-app-2

How to use

  • Build and flash firmware to esp32.

  • Connect the USB camera at this timing.
    WaitingForDevice

  • For available USB cameras, device information will be displayed and video streaming will begin.
    StartStreaming

  • For unavailable USB cameras, you will see an error like this.
    NotSupportCamera

  • Start your browser and enter the ESP32 IP address and port number in the address bar.
    You can use mDNS instead of ESP32 IP addresses.
    WebStreaming

  • Streaming example : Some cameras have Auto Focus available.
    sample-1 sample-2 sample-3

Limitations

  • At 320x240, 30FPS is the maximum rate regardless of camera capabilities.
  • At 640x480, 15FPS is the maximum rate regardless of camera capabilities.

Using ESP32-CAM development board

You can use this repository.

References

https://github.com/nopnop2002/esp-idf-video-snapshot

About

Capture video from a USB camera using ESP-IDF

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.