Überwachungskamera Livestream einrichten
Nachdem wir mit (USB) Kameras / Webcams bereits einzelne Bilder aufnehmen können, wollen wir auch Live Bilder ansehen. Dies kann entweder am Smartphone stattfinden oder an einem PC außerhalb des heimischen Netzwerks. Dazu konfigurieren wir mit der Raspberry Pi Überwachungskamera einen Livestream. Das Tolle daran ist, dass fast jede USB Kamera (also auch Webcams) benutzt werden können. Je nach Platzierung, kann z.B. eine Kamera ohne Infrarot Filter sinnvoll sein, um so bessere Nachtaufnahmen zu ermöglichen.
Falls wir eine USB Kamera anschließen wollen, muss unser Raspberry Pi natürlich einen freien USB Port besitzen. Allerdings können wir auch die offizielle Kamera nutzen, welche es in zwei Ausführungen gibt:
* Standardvariante (grün), welche u.a. 8MP hat und u.a. Videos in 1080p aufnehmen kann. Da ein Infrarot Filter eingebaut ist, eignet sie sich besonders für Tageslicht Aufnahmen bzw. für Orte mit genügend Lichteinstrahlung. * NoIR Variante (schwarz): Die Spezifikationen (Auflösung, etc.) sind identisch, allerdings ist kein IR Filter eingebaut, wodurch Aufnahmen mit wenig Licht besser erscheinen. Dies empfiehlt sich besonders bei dunklen Szenen.
Beide Kameras können direkt über den CSI Anschluss auf der Platine angeschlossen werden, wodurch kein USB Port belegt wird. Die neueren Zero Modelle (ab Generation 2) besitzen nun auch CSI Ports.
Alternativ kann auch eine beliebige USB Webcam benutzt werden, solange entsprechende Treiber für Linux vorhanden sind. Dies ist aber bei fast allen neueren Kameras der Fall. Sollte unser Raspberry Pi keinen integrierten WLAN Adapter haben, brauchen wir ggf. noch einen solchen, da eine Netzwerk- bzw. Internetverbindung unumgänglich ist.
Vorbereitungen für den Livestream treffen
Bevor wir den Stream unserer Raspberry Pi Kamera bzw. USB Webcam anlegen, müssen wir die Pakete aktualisieren:
sudo apt update sudo apt upgrade
Anschließend kann das Tool motion installieren, welches den Livestream möglich macht.
sudo apt install motion -y
Die Installation wird nun ein wenig dauern.
Hat soweit alles geklappt, so kann die Kamera angeschlossen werden (falls nicht bereits geschehen). Falls du eine USB Webcam nutzt, kannst du prüfen, ob sie erkannt wurde:
lsusb
Sofern keine speziellen Treiber notwendig sind, sollten mit folgendem Befehl alle angeschlossenen Videogeräte / Kameras angezeigt werden:
ls /dev/video*
Falls du eine der offizielen Kamera Module verwendest, ist es wichtig folgendes auszuführen, damit die Kamera gleich angezeigt wird (am besten per Autostart):
sudo modprobe bcm2835-v4l2
Damit das Modul bereits beim Booten geladen wird ergänze die Datei /etc/modules:
sudo nano /etc/modules
Am Ende der Datei einfügen
bcm2835-v4l2
Danach natürlich speichern mit Strg+O und Beenden mit Strg+X.
Ist nur eine einzige Webcam / Raspberry Pi Kamera angeschlossen, sollte Device /dev/video0 angegeben sein. Falls du mehrere Geräte angeschlossen hast, musst du im folgenden das Gerät auswählen, welches den Stream übertragen soll.
Raspberry Pi Livestream konfigurieren
Für die weiteren Schritte, in denen wir einige Einstellungen festlegen, schauen wir uns die Kamera Details an:
v4l2-ctl -V
Für meine USB Webcam habe ich folgende Ausgabe erhalten. Die Informationen zur Auflösung usw. werde ich gleich in der Konfigurationsdatei angeben.
pi@raspberrypi:~ $ v4l2-ctl -V
Format Video Capture:
Width/Height : 640/480
Pixel Format : 'YUYV'
Field : None
Bytes per Line: 1280
Size Image : 614400
Colorspace : SRGB
Flags :
Bearbeiten wir also die Konfigurationsdatei von Motion:
sudo nano /etc/motion/motion.conf
Folgende Zeilen müssen angepasst werden (die Variable kann mit STRG+W gesucht werden, die hinteren Werte wurden geändert):
# Start in daemon (background) mode and release terminal (default: off) daemon on ... # Restrict stream connections to localhost only (default: on) stream_localhost off ... # Target base directory for pictures and films # Recommended to use absolute path. (Default: current working directory) target_dir /home/pi/Monitor
Folgene Zeilen sind optimal und sollten auch geändert werden (haben wir vorher ausgelesen):
v4l2_palette 15 # Nummer aus der Tabelle davor entnehmen, 15 enstpricht YUYV ... # Image width (pixels). Valid range: Camera dependent, default: 352 width 640 # Image height (pixels). Valid range: Camera dependent, default: 288 height 480 # Maximum number of frames to be captured per second. # Valid range: 2-100. Default: 100 (almost no limit). framerate 10
Gespeichert wird mit STRG+O und geschlossen mit STRG+X. Weitere Optionen (Port, etc.) können auch noch im Nachhinein angepasst werden (erfordert einen Neustart). Die Kurzbeschreibung der Einstellungen ist dabei aber recht aufschlussreich.
Jetzt müssen wir nur noch den Daemon aktivieren, damit wir den Service gleich laufen lassen können:
sudo nano /etc/default/motion
Hier ersetzen wir „no“ mit „yes“, womit folgender Text dort steht (ohne Kommentar):
start_motion_daemon=yes
Nun müssen wir den Ordner, den wir vorher als Speicherort für die aufgenommen Frames angegeben haben, noch erstellen und die nötigen Schreibrechte erteilen:
mkdir /home/pi/Monitor sudo chgrp motion /home/pi/Monitor chmod g+rwx /home/pi/Monitor
Anschließend können wir den Service bereits starten:
sudo service motion start
Raspberry Pi Überwachungskamera Livestream testen
Um zu testen, ob unsere Kamera nun auch wirklich Livebilder sendet, haben wir prinzipiell zwei Möglichkeiten: Die eine Möglichkeit ist einfach den Browser (Mozilla Firefox, Chrome, etc.) zu verwenden und den Namen des Raspberry Pi’s, gefolgt vom Port (Standard: 8081) anzugeben. Wenn du den Hostnamen und Port nicht geändert hast, solltest du hierüber den Stream sehen können: http://raspberrypi:8081/ (alternativ kann die lokale IP Adresse verwendet werden, wie z.B. 192.168.1.51:8081).
Manche ältere Browser unterstützen diesen Stream allerdings nicht (Internet Explorer lässt grüßen 😀 ). Jene Nutzer können sich den Livestream z.B. über den VLC Player ansehen. Dazu einfach den VLC Player öffnen und im Menü unter „Medien“ → „Netzwerkstream öffnen“ (STRG + N) die oben angegebene Adresse angeben. Dies ist im Übrigen auch im VLC Player für Smartphones und Tablets (Android, Apple) möglich. Dazu im Menü auf „Medienadresse öffnen“ und die IP Adresse inkl. Port angeben.
Je nach angegebener Framerate (in der Konfigurationsdatei angegeben) ist das Bild flüssiger oder eben nicht. Natürlich muss die Kamera das auch entsprechend unterstützen. Falls die Kamera bspw. maximal 10 Frames pro Sekunde senden kann, bringt es natürlich nichts, falls mehr in der Konfiguration eingestellt wurden.
