Bringing the ESP32 camera video stream to the web!
The Arduino ESP32-Camera test sketch only lets you use the stream on your local network. To get the stream to the web, you need a bit more...
This collection of scripts consists of:
- Arduino code for ESP32 camera module (AI Thinker CAM)
websocket_camera_stream.ino
- Python code to receive and serve the images via websockets with
run_in_memory.py
, usingreceive_stream.py
,send_image_stream.py
and a queue systemqueueu.py
I havent found a working repository that streams ESP32 camera images in real time to a web backend. This sovles this issue.
-
Open the ESP32 code in your Arduino IDE, install all missing libraries, change the
ssid
,password
andwebsockets_server_host
. Upload the code to you ESP32 AI Thinker Cam board. Please test the Arduino camera example before you test this code! -
Install the missing python requirements using pip:
pip install pillow websockets flask asyncio
-
Run
run_in_memory.py
You should get a response by flask with an IP and port to enter in your browser.
Now enjoy your fresh live stream! 📺
While this should be fine to run on a private (trusted LAN) network, exposing it to the public internet will allow others to receive and interrupt the stream. Only do this is you have sufficient knowledge.
This is solved using the placeholder.jpg. It just replaces the image, if the backend receives a broken frame to prevent the browser from freezing the stream.
There are many ESP32 Camera modules. The defined pins in websocket_camera_stream.ino
only work with the AI Thinker Cam. Change this, if you have a different board. The only tested camera is currently the OV2640.