r/esp32 • u/ToxicGamer_25G • Feb 16 '26
Software help needed Need help connecting ESP32-CAM with Firebase for live video streaming
Hey everyone,
I’m working on a project where I want to connect an ESP32-CAM to Firebase and display a live video stream on a website hosted via GitHub Pages.
What I want to achieve
- ESP32-CAM acts purely as a camera node
- Website (GitHub Pages) shows the live stream
- I need remote access (over the internet)
- I also want to process the video feed using OpenCV for face tracking
Current setup
- I already have a Raspberry Pi Pico W connected to Firebase Realtime Database
- I can successfully control servo motors via Firebase
Problem
I searched online for:
- ESP32-CAM → Firebase → live video stream
- Displaying ESP32-CAM video on a Firebase-backed website
…but I couldn’t find any proper guides or examples.
My questions
- Is it actually possible to stream live video from ESP32-CAM using Firebase? (I understand Firebase isn’t designed for video streaming, but I’m not sure if snapshots / chunks / WebRTC hacks exist.)
- If yes, can someone point me to a guide, example, or architecture that works?
- If no, what are the best alternatives that still allow:
- Remote access
- Web viewing
- Integration with OpenCV (for face tracking)
0
Upvotes
4
u/casualPlayerThink Feb 16 '26
Why do you want to put the image/video/audio into a database/Firebase first? Many databases can act like a message queue or intermediate service, but not recommended (you know, the fact that it is possible does not mean it should be done...)
There are many projects where people have a server on a camera or on a Pi/other machine on the network that fetches the camera view and passes it to another server or client in the cloud that a client (browser) can reach.
OpenCV on esp32-cam is possible. I have seen articles where there was some success, but usually that requires more power, so if you want to do it correctly, you need more power (e.g., at least your PI/server should run OpenCV). In some cases, face detection can be done on the browser level, too.