In diesem Projekt verwende ich einen Raspberry Pi (Zero W) mit Raspbian als Betriebssystem und einer Raspberry Pi Kamera.
Das Raspberry Pi wird als Stream-Server konfiguriert. Die Aufnahmen der Kamera werden später von Motion erfasst. Motion kann die Bewegungen im Bild erkennen und einen Alarm auslösen.
Die Vorarbeiten (Installation und Konfiguration) von Raspbian Lite sind grundlage für dieses Projekt.
Mit Raspberry Konfig müssen wir das Kamera Modul aktiviert.
sudo raspi-config
Interfacing Options / Camera -> Enable
Advanced Options / Memory Split = 128MB GPU
Den Neustart bitte nicht vergessen!
Ein erster Snapschuss sollte schon jetzt möglich sein.
raspistill -o /tmp/snapshot.jpg
Jetzt können wir die Installation starten.
Zuerst die PublicKey für Apt-Get hinzufügen.
curl https://www.linux-projects.org/listing/uv4l_repo/lpkey.asc | sudo apt-key add -
Die Installationsquellen für Apt-Get hinzufügen.
sudo sh -c 'echo "deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/stretch stretch main" > /etc/apt/sources.list.d/uv4l.list'
Jetzt kann die Installaion starten.
sudo apt-get update
sudo apt-get install uv4l uv4l-raspicam uv4l-raspicam-extras
Der Dienst sollte jetzt laufen.
sudo service uv4l_raspicam status
oder man kann das Device /dev/video0 mit dem Programm uv4l erstellen.
uv4l --driver raspicam --auto-video_nr --width 1280 --height 720 --encoding jpeg
Die Einstellungen kann man in der Konfig Datei speichern.
sudo vim /etc/uv4l/uv4l-raspicam.conf
encoding = h264 width = 1280 height = 720 framerate = 20 |
Jetzt erstellen wir ein Foto in /tmp/snapshot.jpg.
dd if=/dev/video0 of=/tmp/snapshot.jpg bs=11M count=1
Quelle: Linux-Projects
Für das Streaming verwenden einen WebRTC StreamServer.
sudo apt-get install uv4l-webrtc
Mit VLC oder dem Firefox kann man sich den Stream ansehen.
vlc http://raspberrypi:8080/stream/video.mjpeg
Auf einem Raspberry Pi Zero W ist die CPU zu 70% ausgelastet. Verwendet man h264, wird das Encoding per Hardware durchgeführt. Damit sinkt die CPU Auslastung auf 30% ab.
vlc http://raspberrypi:8080/stream/video.h264 --demux h264
Mit VLC ist auch die Umcodierung möglich.
vlc http://localhost:8080/ & cvlc http://raspberrypi:8080/stream/video.h264 --demux h264 --sout '#standard{access=http,mux=ts,dst=0.0.0.0:8080}' :demux=h264 |
FFPlay kann man auch zu Anzeigen verwenden.
ffplay -framerate 30 -video_size 1280x720 -i http://raspberrypi:8080/stream/video.h264 -f rawvideo -vcodec h264
Hier finden Sie weitere Informationen zur UV4L installation.
Leider habe ich Motion nicht dazu gebracht, diesen h264 Stram anzuzeigen. Eine Alternative ist der v4l2 RTSP Server.
wget https://github.com/mpromonet/v4l2rtspserver/releases/download/v0.0.8/v4l2rtspServer-0.0.8-Linux-armv7l.deb
Das Paket kann man auch auf einem Raspberry Pi Zero installieren.
sudo dpkg -i v4l2rtspServer-0.0.8-Linux-armv7l.deb
Ein erster Start sieht so aus.
sudo v4l2rtspServer -F 10 -W 1280 -H 720 -P 8555 /dev/video0
Jetzt kann man den h264 Stream per VLC abspielen. Die CPU Auslastung liegt bei nur 8 Prozent.
vlc rtsp://raspberrypi:8555/unicast
Damit der RTSP Server als Dienst läuft, müssen wir einige Einstellungen vornehmen.
Damit die Option -r funktioniert, braucht man das Modul bcm2835-v4l2.
sudo modprobe bcm2835-v4l2
Wir sollten prüfen, ob das Modul geladen wird.
lsmod |grep bcm
Nach jedem Neustart soll das Modul automatisch geladen werden.
sudo sh -c 'echo "bcm2835-v4l2" >> /etc/modules-load.d/modules'
Jetzt sollte die Option -r funktionieren.
/usr/bin/v4l2rtspServer -r -F 10 -W 1280 -H 720 -P 8555 /dev/video0
Jetzt können wir den Dienst für Systemd anlegen.
sudo vim /etc/systemd/system/v4l2rtspserver.service
[Unit] Description=V4L2 RTSP server After=network.target [Service] Type=simple User=root ExecStart=/usr/bin/v4l2rtspServer -r -F 20 -W 1280 -H 720 -P 8555 /dev/video0 [Install] WantedBy=multi-user.target |
Jetzt ist der Start als Dienst möglich.
sudo systemctl start v4l2rtspserver
sudo systemctl status v4l2rtspserver
sudo systemctl enable v4l2rtspserver
Quelle: Github
Für die Bewegungserkennung verwende ich Motion.
Die aktuelle Version von Motion bekommt man bei Github.
wget https://github.com/Motion-Project/motion/releases/download/release-4.1.1/pi_stretch_motion_4.1.1-1_armhf.deb
Die Installation erfolgt per DPKG Tool.
sudo dpkg -i pi_stretch_motion_4.1.1-1_armhf.deb
Es gibt auch eine Beispielkonfiguration.
wget http://linux-projects.org/downloads/examples/motion.conf
Will man mit Motion direkt auf die Kamera /dev/video0 zugreifen, braucht man beim Start die Library „libUV4Lext.so“.
LD_PRELOAD=/usr/lib/uv4l/uv4lext/armv6l/libuv4lext.so motion -c /home/pi/motion/motion.conf
Im Webbrowser kann unter der Adresse http://raspberrypi:8081/stream.mjpg die Kamera aufzurufen.
Quelle: Github
Die LED an der Raspberry Pi Kamera lässt sich deaktivieren, indem der Eintrag disable_camera_led in der Konfig Datei gesetzt wird.
sudo sh -c 'echo "disable_camera_led=1" >> /boot/config.txt'
Schreibe einen Kommentar