mirror of
https://github.com/John-Varghese-EH/ESP32-CAM-ONVIF.git
synced 2025-11-12 08:48:39 +00:00
Update README.md
This commit is contained in:
177
README.md
177
README.md
@@ -1,69 +1,171 @@
|
|||||||
# ESP32-CAM | ONVIF | DVR/NVR Stream and Recording | Ultimate Feature Packed Firmware
|
# ESP32-CAM ONVIF RTSP Camera
|
||||||
## ESP32-CAM ONVIF RTSP Camera
|
|
||||||
|
**Professional, Feature-Rich, and Network Camera Firmware for ESP32-CAM**
|
||||||
|
|
||||||
[](https://www.espressif.com/en/products/socs/esp32)
|
[](https://www.espressif.com/en/products/socs/esp32)
|
||||||
[](LICENSE)
|
[](LICENSE)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
Transform your affordable ESP32-CAM module into a powerful ONVIF-compatible network camera, ready for integration with professional NVR/DVR systems (Hikvision, Dahua, and more). This firmware provides RTSP streaming, ONVIF discovery, and a roadmap for advanced features like web configuration, SD card recording, and motion detection.
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> **🚧 Work in Progress:**
|
> **🚧 Work in Progress:**
|
||||||
> The project is still evolving! Help make it better and faster—contributions, feedback, and ideas are warmly welcome.
|
> This project is evolving rapidly. Contributions, feedback, and feature requests are welcome!
|
||||||
> *Star the repo and join the project!*
|
> -*Star the repo and join the project!*
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
**ESP32-CAM ONVIF RTSP Camera** is an open-source firmware project that transforms your affordable ESP32-CAM module into a network camera compatible with professional NVR/DVR systems, including Hikvision, Dahua, and other ONVIF-compliant solutions.
|
|
||||||
|
|
||||||
This project brings together:
|
|
||||||
- **RTSP streaming** (MJPEG) for real-time video
|
|
||||||
- **Minimal ONVIF support** for device discovery, stream URI reporting, and basic integration with security recorders
|
|
||||||
|
|
||||||
The goal is to make ESP32-CAM modules plug-and-play with mainstream video surveillance systems, while remaining lightweight and efficient.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- 📡 **ONVIF Discovery:** Your ESP32-CAM will appear as a discoverable camera on ONVIF-compatible NVRs/DVRs.
|
- 📡 **ONVIF Discovery:**
|
||||||
- 🎥 **RTSP Streaming:** Real-time MJPEG streaming for live view and recording.
|
Appears as a discoverable camera on ONVIF-compatible NVRs/DVRs for easy integration.
|
||||||
- ⚡ **Lightweight:** Designed for ESP32-CAM’s limited resources.
|
- 🎥 **RTSP Streaming (MJPEG):**
|
||||||
- 🛠️ **Easy Setup:** Simple Wi-Fi configuration and deployment.
|
Real-time video streaming for live view and recording.
|
||||||
- 🔒 **Open Source:** MIT-licensed for personal and commercial use.
|
- ⚡ **Lightweight:**
|
||||||
|
Optimized for ESP32-CAM’s limited resources.
|
||||||
|
- 🛠️ **Easy Setup:**
|
||||||
|
Simple Wi-Fi configuration (web-based setup coming soon).
|
||||||
|
- 🌐 **Web Configuration Interface:**
|
||||||
|
*(Planned)* Configure camera, Wi-Fi, and storage via browser.
|
||||||
|
- 🗂️ **SD Card Recording:**
|
||||||
|
*(Planned)* Record video directly to microSD card.
|
||||||
|
- ↔️ **Motion Detection:**
|
||||||
|
*(Planned)* Basic motion detection for event-based recording.
|
||||||
|
- 🔐 **Secure Credential Storage:**
|
||||||
|
*(Planned)* Store Wi-Fi credentials securely in SPIFFS.
|
||||||
|
- 🌏 **Access Point Fallback:**
|
||||||
|
*(Planned)* Automatically creates an AP if unable to connect to Wi-Fi.
|
||||||
|
- 🔒 **Open Source:**
|
||||||
|
MIT-licensed for personal and commercial use.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Roadmap
|
## Hardware Requirements
|
||||||
|
|
||||||
- [x] Minimal ONVIF WS-Discovery responder
|
- **ESP32-CAM board** (AI-Thinker or compatible)
|
||||||
- [x] ONVIF `/onvif/device_service` endpoint (GetStreamUri, GetCapabilities)
|
- **MicroSD card** (optional, for recording)
|
||||||
- [x] RTSP video streaming (MJPEG)
|
- **5V power supply**
|
||||||
- [ ] Web-based configuration interface
|
- **FTDI programmer/adapter** (for initial flashing)
|
||||||
- [ ] Optional SD card recording
|
|
||||||
- [ ] Motion detection (future)
|
---
|
||||||
- [ ] Support for more ONVIF features (profiles, device info, etc.)
|
|
||||||
|
## Software Dependencies
|
||||||
|
|
||||||
|
- **Arduino IDE** or **PlatformIO**
|
||||||
|
- **ESP32 Arduino Core**
|
||||||
|
- **Required Libraries:**
|
||||||
|
- ArduinoJson
|
||||||
|
- ESP32 Camera Driver
|
||||||
|
- SPIFFS file system
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Arduino IDE
|
||||||
|
|
||||||
|
1. **Install Arduino IDE** from [arduino.cc](https://www.arduino.cc/)
|
||||||
|
2. **Add ESP32 board support:**
|
||||||
|
- File > Preferences > Add
|
||||||
|
`https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json`
|
||||||
|
to "Additional Board Manager URLs"
|
||||||
|
- Tools > Board > Boards Manager > Search "ESP32" > Install latest version
|
||||||
|
3. **Install required libraries:**
|
||||||
|
- Tools > Manage Libraries > Search and install "ArduinoJson"
|
||||||
|
4. **Connect ESP32-CAM** via FTDI adapter:
|
||||||
|
- GND → GND
|
||||||
|
- 5V → 5V
|
||||||
|
- TX → RX
|
||||||
|
- RX → TX
|
||||||
|
- GPIO0 → GND (for flashing mode)
|
||||||
|
5. **Select Board/Port:**
|
||||||
|
Tools > Board > ESP32 Arduino > AI-Thinker ESP32-CAM
|
||||||
|
Tools > Port > [Your FTDI port]
|
||||||
|
6. **Upload Firmware:**
|
||||||
|
Click Upload. After upload, disconnect GPIO0 from GND and reset ESP32-CAM.
|
||||||
|
|
||||||
|
### PlatformIO (VS Code)
|
||||||
|
|
||||||
|
1. **Install Visual Studio Code**
|
||||||
|
2. **Install PlatformIO extension**
|
||||||
|
3. **Create a new project:**
|
||||||
|
- Board: AI Thinker ESP32-CAM
|
||||||
|
- Framework: Arduino
|
||||||
|
4. **Configure `platformio.ini`:**
|
||||||
|
```
|
||||||
|
[env:esp32cam]
|
||||||
|
platform = espressif32
|
||||||
|
board = esp32cam
|
||||||
|
framework = arduino
|
||||||
|
monitor_speed = 115200
|
||||||
|
lib_deps = bblanchon/ArduinoJson @ ^6.21.3
|
||||||
|
upload_speed = 921600
|
||||||
|
build_flags = -DCORE_DEBUG_LEVEL=5
|
||||||
|
```
|
||||||
|
5. **Import source files** into `src/` directory.
|
||||||
|
6. **Flash firmware** as above.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
1. **Clone this repository**
|
1. **Clone this repository**
|
||||||
2. **Edit Wi-Fi credentials** in the source code
|
2. **Edit Wi-Fi credentials** in the source code (web setup coming soon)
|
||||||
3. **Flash to your ESP32-CAM** using Arduino IDE or PlatformIO
|
3. **Flash to your ESP32-CAM**
|
||||||
4. **Connect your NVR/DVR** and discover the camera via ONVIF, or add the RTSP stream manually
|
4. **Connect your NVR/DVR** and discover the camera via ONVIF, or add the RTSP stream manually:
|
||||||
|
```
|
||||||
|
rtsp://[camera-ip]:554/mjpeg/1
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
- Access the RTSP stream using compatible NVR/DVR software or VLC.
|
||||||
|
- *(Planned)* Access the web interface for live view, configuration, and SD card management.
|
||||||
|
- *(Planned)* On first boot, ESP32-CAM will create an access point ("ESP32-CAM-ONVIF") for initial setup.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Compatibility
|
## Compatibility
|
||||||
|
|
||||||
- **Tested hardware:** AI-Thinker ESP32-CAM
|
- **Hardware Support:** ESP32-CAM (AI-Thinker or compatible)
|
||||||
- **NVR/DVR compatibility:** Hikvision, Dahua, and most ONVIF-compliant recorders (MJPEG stream)
|
- **NVR/DVR Compatibility:** Hikvision, Dahua, and most ONVIF-compliant recorders (MJPEG stream)
|
||||||
- **Limitations:** MJPEG only (no H.264); some recorders may require H.264 for recording
|
- **Limitations:** MJPEG only (no H.264); some recorders may require H.264 for recording
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
| File/Folder | Description |
|
||||||
|
|-------------------------|--------------------------------------------|
|
||||||
|
| `ESP32-CAM-ONVIF.ino` | Main firmware sketch |
|
||||||
|
| `camera_control.*` | Camera initialization and settings |
|
||||||
|
| `rtsp_server.*` | RTSP streaming implementation |
|
||||||
|
| `onvif_server.*` | ONVIF protocol implementation |
|
||||||
|
| `web_config.*` | *(Planned)* Web interface |
|
||||||
|
| `wifi_manager.*` | *(Planned)* Wi-Fi setup and AP fallback |
|
||||||
|
| `sd_recorder.*` | *(Planned)* SD card recording |
|
||||||
|
| `motion_detection.*` | *(Planned)* Motion detection |
|
||||||
|
| `data/` | *(Planned)* Web UI files (HTML, CSS, JS) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Roadmap
|
||||||
|
|
||||||
|
- [x] ONVIF WS-Discovery responder
|
||||||
|
- [x] `/onvif/device_service` endpoint (GetStreamUri, GetCapabilities)
|
||||||
|
- [x] RTSP video streaming (MJPEG)
|
||||||
|
- [ ] Web-based configuration interface
|
||||||
|
- [ ] SD card recording and management
|
||||||
|
- [ ] Motion detection
|
||||||
|
- [ ] Advanced ONVIF features (profiles, device info, etc.)
|
||||||
|
- [ ] Secure credential storage (SPIFFS)
|
||||||
|
- [ ] Access point fallback for Wi-Fi setup
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
|
|
||||||
*Coming soon!*
|
*Coming soon!*
|
||||||
@@ -83,6 +185,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This project is licensed under the [MIT License](LICENSE).
|
This project is licensed under the [MIT License](LICENSE).
|
||||||
@@ -91,10 +194,10 @@ This project is licensed under the [MIT License](LICENSE).
|
|||||||
|
|
||||||
## Acknowledgments
|
## Acknowledgments
|
||||||
|
|
||||||
- [Micro-RTSP](https://github.com/geeksville/Micro-RTSP) for RTSP streaming on ESP32
|
- Micro-RTSP for RTSP streaming on ESP32
|
||||||
- ONVIF community for protocol documentation and inspiration
|
- ONVIF community for protocol documentation and inspiration
|
||||||
|
- Thanks to all contributors and the open-source community!
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> **Stay tuned for updates, features, and documentation as the project evolves!**
|
*Stay tuned for updates, new features, and documentation as the project evolves! Star the repo to follow progress and contribute to making ESP32-CAM ONVIF the ultimate DIY network camera solution.*
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user