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.