3.3 KiB
3.3 KiB
IPCam Orange Pi Dashboard (Updated)
1. Overview
IPCam Orange Pi Dashboard is a lightweight web-based surveillance system built on top of MediaMTX.
The system is designed for:
- Orange Pi (low-resource hardware)
- Multiple IP cameras (4–10 cams)
- No AI processing (unlike Frigate)
- Full control via MediaMTX Control API
2. Architecture
Components
- IP Cameras (RTSP - H264 recommended)
- MediaMTX (stream proxy + recorder + API)
- Dashboard Backend (scheduler + API)
- Dashboard Frontend (live view + playback UI)
Data Flow
Camera → MediaMTX → WebRTC → Dashboard
Camera → MediaMTX → Recording (fMP4) → Storage → Playback UI
3. Core Features
3.1 Live View
- Grid layout (1 / 4 / 9 cameras)
- WebRTC streaming (low latency)
- Auto reconnect
- Lazy loading streams
3.2 Playback
- List recordings by:
- Camera
- Date
- Play fMP4 files via HTML5 video
- File-based playback (no timeline initially)
3.3 Camera Management
- Add/remove camera (update MediaMTX config)
- Reload MediaMTX if needed
3.4 Recording Schedule (IMPORTANT)
- Configure recording time per system:
- Weekdays: 18:00 → 08:00
- Weekend: 24h
- Implemented in Dashboard (NOT MediaMTX)
4. MediaMTX Integration
4.1 Endpoints
- RTSP: rtsp://:8554/
- WebRTC: http://:8889
- API: http://:9997
4.2 Control API Usage
Enable API
api: true
apiAddress: :9997
4.3 Toggle Recording via API
Enable recording
POST /v3/config/paths/patch
{
"paths": {
"cam1": { "record": true }
}
}
Disable recording
POST /v3/config/paths/patch
{
"paths": {
"cam1": { "record": false }
}
}
4.4 Bulk Update
{
"paths": {
"cam1": { "record": true },
"cam2": { "record": true },
"cam3": { "record": true },
"cam4": { "record": true }
}
}
5. Scheduler Design
Logic
- Dashboard backend controls recording
- Runs every 60 seconds
Example Logic
if weekend:
record = true
else:
record = (hour >= 18 or hour < 8)
Implementation
- setInterval / cron job in backend
- Calls MediaMTX API
6. Storage
Format
- fMP4 segments
Path
/recordings/<camera>/<timestamp>.fmp4
Notes
- Files created per segment (e.g., 5 minutes)
- Recording starts immediately when enabled
7. Technology Stack
Backend
- Node.js (Express) or Python (FastAPI)
- Responsibilities:
- Scheduler
- MediaMTX API integration
- Recording index API
Frontend
- HTML + JS (or React)
- WebRTC player
- Video playback UI
8. Performance Requirements
- 4–5 simultaneous streams
- Minimal CPU usage (no transcoding)
- Stable on Orange Pi
9. Constraints
- Browser requires H264 (NOT H265)
- WebRTC requires UDP port (8189) open
- Firewall must allow:
- 8554 (RTSP)
- 8889 (WebRTC HTTP)
- 8189/UDP (ICE)
10. Future Enhancements
- Timeline playback (merge segments)
- Multi-user authentication
- Mobile UI
- Event-based recording (optional)
11. Summary
- MediaMTX handles streaming + recording
- Dashboard handles logic + scheduling
- Recording is controlled via API (not config reload)
This architecture is optimized for simplicity, performance, and scalability on Orange Pi.