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 the images via websockets with
receive_stream.py
- Python code to push the most recent image to a website with
send_image_stream.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
python receive_stream.py
You should get a constant stream of numbers (sizes of images). The image.jpg in the directory is always the latest received image. -
Open a second terminal and run
python send_image_stream.py
You should get a response by flask with an IP and port to enter in your browser.
Now enjoy your fresh live stream! 📺
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.