# raspi-cam MJPEG-Stream-Server für die Raspberry-Pi-Kamera. Startet `rpicam-vid` einmalig als Singleton-Prozess und verteilt die Frames per Flask an beliebig viele Viewer. Bei einem Absturz von `rpicam-vid` erfolgt ein automatischer Neustart. ![Raspi-Cam MJPEG Streaming](pictures/Raspi-Cam-MJPEG-Streaming.png) ## Voraussetzungen - Raspberry Pi mit angeschlossener Kamera - `rpicam-vid` (rpicam-apps) - Python 3 mit venv (`sudo apt install python3-venv`) ## Installation ```bash python3 -m venv venv venv/bin/pip install -r requirements.txt ``` ## Start ```bash venv/bin/python app.py ``` Danach erreichbar unter: | URL | Beschreibung | |---|---| | `http://:8080/` | HTML-Seite mit Live-Stream | | `http://:8080/stream` | MJPEG-Stream | | `http://:8080/stream.mjpg` | MJPEG-Stream (vehicle-counter kompatibel) | ## Autostart mit systemd Die Unit nutzt den Interpreter aus dem venv (`venv/bin/python`), das Projekt muss also vorher wie oben installiert sein. In `raspi-cam.service` ggf. `User` und die Pfade anpassen. Der User muss Mitglied der Gruppe `video` sein. ```bash sudo cp raspi-cam.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now raspi-cam ``` Status und Logs: ```bash systemctl status raspi-cam journalctl -u raspi-cam -f ``` ## Konfiguration Die Konfiguration erfolgt über Umgebungsvariablen oder eine `.env`-Datei im Projektverzeichnis. | Variable | Beschreibung | Default | |---|---|---| | `APP_HOST` | Bind-Adresse | `0.0.0.0` | | `APP_PORT` | HTTP-Port | `8080` | | `CAM_MODE` | Sensor-Modus | `1640:1232` | | `CAM_WIDTH` | Ausgabebreite | `640` | | `CAM_HEIGHT` | Ausgabehöhe | `480` | | `CAM_FRAMERATE` | Ziel-FPS | `20` | | `CAM_QUALITY` | JPEG-Qualität (1–100) | `30` | | `CAM_ROTATION` | Rotation (0/90/180/270) | leer | Beispiel `.env`: ``` CAM_MODE=1640:1232 CAM_WIDTH=820 CAM_HEIGHT=616 CAM_FRAMERATE=20 CAM_QUALITY=50 CAM_ROTATION= APP_PORT=8080 ```