Raspberry Pi Zero 2 W Camera Streaming Full HD

(Update – Juni 2025) Kurzfassung:Mit den richtigen Kernel‑Tweaks, einer sauberen Stromversorgung und einer fein‑justierten rpicam-vid‑Pipeline streamt der Raspberry Pi Zero 2 W stundenlang stabil in 1080p 30 FPS auf einen lokalen NGINX‑RTMP‑Server. Dieser Beitrag zeigt alle Schritte – Hardware, Software, Config‑Files und jede Menge Hintergrundwissen

(Update – Juni 2025)

Kurzfassung:
Mit den richtigen Kernel‑Tweaks, einer sauberen Stromversorgung und einer fein‑justierten rpicam-vid‑Pipeline streamt der Raspberry Pi Zero 2 W stundenlang stabil in 1080p 30 FPS auf einen lokalen NGINX‑RTMP‑Server. Dieser Beitrag zeigt alle Schritte – Hardware, Software, Config‑Files und jede Menge Hintergrundwissen – damit dein Heimüberwachungssystem komplett ohne Cloud auskommt.

1. Warum „Self‑Hosted“ statt Cloud?

  • Datenschutz: Alle Aufnahmen bleiben im heimischen LAN.
  • Performance: 1080p @ 30 FPS in Echtzeit – ohne Up‑ & Download‑Limit.
  • Kosten: Keine Abo‑Modelle oder GB‑Gebühren.
  • Bastel‑Faktor: Volle Kontrolle über das System und jede Schraube im Setup.

2. Hardware‑Setup

KomponenteEmpfehlungKommentar
Pi Zero 2 WOriginal‑Netzteil 5 V / 2,5 AUnterspannung killt Audio‑Puffer (XRuns)!
Kamera‑ModulRaspberry Pi Camera Module 3Autofokus & HDR machen sich (manchmal) bezahlt.
USB‑MikrofonGutes UAC‑Class‑Compliant Gerät48 kHz / 16 Bit Stereo.
SpeicherµSD Karte ≥ 32 GB U3Bessere Latenz beim lokalen Recording.

Tipp: Wer mehr Reserven will, packt einen aktiven USB‑Hub mit externem 5 V Netzteil davor.


3. Software‑Stack

  1. Raspberry Pi OS (bookworm)
  2. rpicam-vid (Teil der neuen libcamera Toolchain)
  3. FFmpeg 6.x-7.x (wegen stabilem V4L2 M2M und AAC‑Encoder)
  4. NGINX + RTMP‑Module (Eigen‑Kompilat oder Paketquelle „Debian Multimedia“)
  5. Motion zum lokalen Aufzeichnen von Events
  6. Systemd als Service‑Manager

4. Kernel‑ & GPU‑Tuning (/boot/config.txt)

iniKopierenBearbeiten# ARM- und GPU-Settings – Pi Zero 2 W
arm_boost=1 # Dyn. OC auf 1 GHz
arm_freq=1000 # Statisch 1 GHz, nicht overclocked!
over_voltage=2 # +2 → ~1,312 V Core, leicht angehoben!
core_freq=450 # GPU‑Takt
sdram_freq=450 # DDR
temp_limit=80 # Throttle‑Grenze

Warum over_voltage=2?

Das USB‑Mikro zieht im Peak bis zu 250 mA. Ohne leichte Spannungserhöhung droppt der Core‑PLL → ALSA Buffer laufen leer → XRuns → Rpicam-vid/FFmpeg verwirft Pakete → RTMP‑Server meldet „Corrupted FLV“.


5. Streaming‑Service (systemd)

/etc/systemd/system/stream.service

[Unit]
Description=Full HD Camera Stream to RTMP
After=network.target

[Service]
Type=simple
Nice=-19
ExecStart=/usr/local/bin/stream.sh
Restart=on-failure
RestartSec=3

[Install]
WantedBy=multi-user.target

sudo systemctl enable --now stream.service


6. Das Herzstück: stream.sh

#!/usr/bin/env bash
set -euo pipefail

# Full HD, low‑latency, libav‑Pipeline
nice -n -19 rpicam-vid -t 0 \
--width 1920 --height 1080 --framerate 30 \
--nopreview 1 --low-latency 1 --buffer-count 4 --flush 1 \
--exposure normal --sharpness 1.2 --contrast 1.2 \
--brightness 0.0 --saturation 1.0 --ev +1.1 --awb auto \
--profile high --level 4.2 \
--codec libav --libav-audio \
--audio-source alsa --audio-device plughw:0,0 \
--audio-channels 2 --audio-codec aac \
--audio-samplerate 48000 --audio-bitrate 128000 \
--libav-format flv \
--autofocus-mode manual --lens-position 0.8 \
--denoise auto --autofocus-window 0.25,0.25,0.5,0.5 \
--inline 1 -b 5000000 \
-o "rtmp://192.168.178.25/zero/test"

Parameter‑Highlights

SwitchWirkungWarum wichtig?
--buffer-count 4Minimiert LatenzWeniger Frames im Puffer.
--inline 1IDR‑Frame alle Sek.Schneller Re‑Sync bei RTMP.
--profile high --level 4.2H.264 Hi@L4.2Kompatibel & effizient.
-b 50000005 Mbit/sGenug für Details & Bewegung.
--audio-bitrate 128000AAC 128 kbit/sSolide Sprachqualität.

7. Erfolgs‑Kontrolle

journalctl -u stream.service -f

[h264_v4l2m2m @ 0x557306fa60] Using device /dev/video11
Input #0, alsa, from 'plughw:0,0':
Stream #0:0: Audio: pcm_s16le, 48000 Hz, 2 channels
Output #0, flv, to 'rtmp://192.168.178.25/zero/test':
Stream #0:0: Video: h264 (High), 1920x1080, 30 fps
Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, 128 kb/s

Keine XRuns? Kein „Corrupted FLV“? → Setup ready!


8. NGINX‑RTMP‑Konfiguration (Ausschnitt)

nginxKopierenBearbeitenrtmp {
    server {
        listen 1935;
        chunk_size 1024;

        application zero {
            live on;
            record off;     # Motion übernimmt das Recording
            allow publish 192.168.178.0/24;
            deny  publish all;
            allow play    all;
        }
    }
}
bashKopierenBearbeitensudo nginx -t && sudo systemctl reload nginx

9. Motion: Nur speichern, wenn sich was bewegt

/etc/motion/motion.conf

iniKopierenBearbeitendaemon on
stream_port 0            # Kein MJPEG‑Stream nach außen
log_level 3
width 1920
height 1080
framerate 30
rtmp_url rtmp://127.0.0.1/zero/test
output_pictures off
ffmpeg_output_movies on
target_dir /srv/cam/2025-06-15
minimum_motion_frames 3
event_gap 60

10. Troubleshooting & Fine‑Tuning

ProblemSymptomFix
XRunsRuckler, Totalaussetzerover_voltage=2, besseres Netzteil
Verzögerung > 3 sLatenz spürbar--low-latency 1, chunk_size 512 im RTMP
Dropped Frames bei DämmerungBlockartefakte--exposure night oder --denoise cdn_off
CPU 100 %Thermal ThrottleHeatsink & arm_freq_min=200 für Idle‑Phasen

11. Performance‑Messung

  • CPU‑Last: 23 % avg (vc_sm, v4l2m2m entlastet ARM).
  • RAM‑Verbrauch: <100 MB RSS (libcamera).
  • Temperatur: 69 °C im Dauerbetrieb ohne Gehäuselüfter.
  • Bandwidth: 5,16 Mbit/s konstant (gemessen via ifstat).

12. Sicherheit & Netzwerk

  1. LAN only: RTMP‑Port (1935) per Firewall auf internes Netz begrenzen.
  2. Nutzer‑Rechte: rpicam-vid in eigener Unix‑Gruppe, kein Root nötig.
  3. TLS‑Offloading: Wer WAN‑Zugriff braucht, setzt vor NGINX einen Reverse‑Proxy mit LetsEncrypt‑Zert.
  4. Updates: sudo unattended-upgrade aktivieren, aber /boot ausnehmen, damit OC‑Settings bleiben.

13. Fazit

  • Pi Zero 2 W + rpicam-vid = budget‑freundliches 1080p‑Überwachungssystem.
  • Kein Vendor‑Lock‑In, keine Cloud, volle Hoheit über Bild‑ & Ton‑Daten.
  • Das Setup funktioniert nach Tagen der Feinarbeit jetzt stabil rund um die Uhr – wichtig war vor allem die Kombination aus moderatem Over‑Voltage, sauberer AAC‑Pipeline und aggressivem Buffer‑Tuning.

14. Nächste Schritte

  • Mehr Kameras? RTMP‑App pro Pi, zentral in obs‑ng ausgekoppelt.
  • KI‑Motion‑Detection: Frigate oder TensorFlow‑Lite nachrüsten, spart Speicherplatz.
  • Home‑Assistant Integration: Stream als Dashboard‑Card, MQTT‑Events bei Bewegung.

Viel Erfolg beim Nachbauen!

Fragen, Anregungen oder eigene Benchmarks? Ab damit in die Kommentare – ich freu mich auf eure Erfahrungen.

Leave a Reply

Your email address will not be published. Required fields are marked *

wetransco.de
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.