Motion Detection mit Raspberry Pi. Webcams überwachen, auch RTSP

Ein häufiger Anwendungsfall für einen Raspberry Pi* ist das Überwachen einer oder mehrerer Netzwerk- oder Webcams. Mit dem RPi 3 funktioniert das inzwischen auch recht performant. Ich selbst nutze ein RPi 3 zusammen mit einer Netzwerkkamera um meine Einfahrt zu überwachen. In dieser Ausbaustufe erkennt das RPi eine Änderung im überwachten Bereich und speichert das Webcambild ab. Ebenfalls wäre es auch möglich ein kurzes Video aufzuzeichnen. Die hier eingesetzte Software „motion“ ist weit verbreitet und sehr mächtig, so das sicherlich viele Anwendungsfälle abgedeckt werden können. Ich werde hier die Inbetriebnahme und die wichtigsten Konfigurationseinstellungen aufzeigen sodass man dann darauf aufbauend eigene Lösungen konfigurieren kann.

  1. Übersicht
  2. Vorbereitung
  3. ffmpeg für rtsp (optional)
  4. motion installieren
  5. motion konfigurieren
  6. motion starten

1. Übersicht: Raspberry Pi Cam, USB Kamera, Webcam oder Netzwerkkamera?

„motion“ kann fast alle Kameras überwachen. Auch die RPi Cams. Wichtig ist das es für diese Kamera einen Linuxtreiber gibt, dann erscheint die Kamera im Dateiverzeichnis unter /dev/video0.

Hat man eine Netzwerkkamera die über eine eigene IP angesprochen wird, ist dies auch kein Problem, auch diese Streams könne überwacht werden. Sogar RTSP Formate sind möglich, was sehr praktisch ist da inzwischen die meisten billigen, aber auch besseren Chinageräte dies unterstützen.

2. Vorbereitung

Wir werden motion und benötigte Abhänigkeiten selbst compilieren. Das hat den Vorteil das wir mehrere Funktionen haben als in der Vorkompilierten Version.

Bevor wir beginnen sollten wir unser System jedoch erst aufräumen. Dafür müssen wir folgende Befehle ausführen. Am einfachsten ist es die Befehle in eine Bash Datei zu kopieren und diese dann auszuführen. Alternativ können die Befehle natürlich auch einzeln ausgeführt werden:

sudo bash
apt-get update
apt-get upgrade
apt-get remove x264
apt-get remove libx264-dev
apt-get remove libavutil
apt-get remove libpostproc
apt-get remove libswresample
apt-get remove libswscale, ffmpeg
apt-get remove libavcodec
apt-get remove libavfilter
apt-get remove libavresample
apt-get remove libavcodec
apt-get remove libavfilter

Nun installieren wir die benötigten Tools um motion selbst zu compilieren:

sudo bash
apt-get install autoconf automake build-essential libtool libjpeg8-dev libzip-dev
apt-get install libavformat-dev libavcodec-dev libavutil-dev libav-tools libswscale-dev
cd /
git clone git://git.videolan.org/x264.git
cd x264
./configure --enable-shared --disable-opencl
make
sudo make install && ldconfig

3. ffmpeg für RTSP (optional)

Wenn wir auf Nmmer sicher gehen wollen das motion unsere Kamera unterstützt oder auch für RTSP müssen wir nun zwingend ffmpeg installieren. Dies dauert auf dem RPi 3 B fast 2 Stunden:

cd /
sudo bash git clone git://source.ffmpeg.org/ffmpeg.git cd ffmpeg ./configure --arch=armhf --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree --enable-shared make sudo make install && ldconfig

4. motion installieren

Nun installieren wir das eigentliche Überwachungsprogramm, das geht wieder deutlich schneller:

cd
sudo bash
git clone https://github.com/Mr-Dave/motion.git
cd motion
autoreconf -fiv
./configure
make
sudo make install && ldconfig

5. motion konfigurieren

Abschließend müssen wir motion nur noch an unsere Bedürfnisse anpassen. Dies geschieht mit der Datei motion.conf welche wir erst noch einrichten müssen:

sudo mv /usr/local/etc/motion/dist-motion.conf /usr/local/etc/motion/motion.conf

Dann können wir die Datei zum bearbeiten öffnen. Wichtige Einstellungen sind:

videodevice
Habt ihr eine USB oder RPi Cam, müsst ihr hier den Pfad angeben. Habt ihr eine Netzwerkkamera, muss diese Einstellung komplett auskommentiert werden.

netcam_url
Habt ihr eine Netzwerkkamera, muss hier der Pfad zum Stream (z.b. rtsp) angegeben werden

netcam_userpass
Die optionalen Zugangsdaten zur Netzwerkkamera im Format benutzername:passwort

width und height
Die Breite und Höhe des Webcambilds. Diese Werte solltet ihr auf die gleichen Einstellungen setzen wie die Kamera das Bild liefert. Ansonsten rechnet motion das Bild um, was auf dem RPi einiges an Rechenleistung kostet.

threshold
Gibt an wie viel Pixel sich im Bild ändern müssen damit eine Änderung erkannt wird. Vorsicht: Ist stark abhängig von der Videoauflösung! Die vorgegebenen 1500 sind bei HD Auflösungen nicht zu gebrauchen.

noise_level
Gibt an wie stark ein Pixel abweichen muss damit er als geändert erkannt wird. Ist nützlich um Bildrauschen nicht als Bewegung zu erkennen.

text_changes
Zeichnet bei Änderungen die Anzahl erkannter geänderter Pixel ins rechte obere Eck. Sehr nützlich um das richtige Threshold zu finden.

target_dir
Ordner in dem Fotos und Videos gespeichert werden sollen.

stream_port
Gibt an auf welchem Port ein RTSP Stream bereit gestellt wird mit dem zu überwachendem Bild

stream_localhost
Wenn aktiviert, kann der Stream nur von lokalhost abgerufen werden

webcontrol_port
Gibt an auf welchem Port ein kleiner Webserver zum steuern erreichbar ist

webcontrol_localhost
Wenn aktiviert, ist der Webserver nur von lokalhost erreichbar.

logfile
Definiert den Speicherort des Logfiles. Gerade zu Beginn ein sehr nützlicher Helfer!

6. motion starten

Motion kann nun gestaret werden


/usr/local/bin/motion start

 

 

6 Antworten

  1. Oliver sagt:

    Super Anleitung, vielen Dank. Git muss natürlich auch noch installiert sein…

    Bei mir kommt bei x264 nach
    ./configure –enable-shared –disable-opencl

    Unknown option –enable-shared, ignored
    Unknown option –disable-opencl, ignored

    Muss mich das nervös machen?

  2. Oliver sagt:

    Irgendwie sind in der Anleitung oben die falschen ASCII Zeichen drin. Mit –enable-shared funktioniert’s dann. Bei ffmpeg genauso.

  3. Oliver sagt:

    Noch ein Hinweis:
    sudo mv /usr/local/etc/motion/dist-motion.conf /usr/local/etc/motion/motion.conf

    „dist-motion.conf“ muss hier „motion-dist.conf“ sein.

  4. Kai sagt:

    Vielen Dank für die Anleitung! Leider bekomme ich beim „make“ im „Motion“-Abschnitt folgende Meldung:
    sudo make
    Welcome to the setup procedure for Motion, the motion detection daemon! If you get
    error messages during this procedure, please report them to the mailing list. The
    Motion Guide contains all information you should need to get Motion up and running.

    Version: 4.1.1+git804c28c
    Platform: Linux (if this is incorrect, please read README.FreeBSD)

    Compiling Motion object files…
    ——————————————————————————–
    -e Compiling ffmpeg.c into ffmpeg.o…
    ffmpeg.c: In function ‘ffmpeg_set_quality’:
    ffmpeg.c:541:41: error: ‘CODEC_FLAG_QSCALE’ undeclared (first use in this function)
    ffmpeg->ctx_codec->flags |= CODEC_FLAG_QSCALE;
    ^
    ffmpeg.c:541:41: note: each undeclared identifier is reported only once for each function it appears in
    ffmpeg.c: In function ‘ffmpeg_set_codec’:
    ffmpeg.c:666:33: error: ‘CODEC_FLAG_GLOBAL_HEADER’ undeclared (first use in this function)
    ffmpeg->ctx_codec->flags |= CODEC_FLAG_GLOBAL_HEADER;
    ^
    Makefile:108: recipe for target ‚ffmpeg.o‘ failed
    make: *** [ffmpeg.o] Error 1

    Eine Fehlermeldung (abgesehen von einigen deprecated-Warningen) habe ich nicht bemerkt. Bin um jede Hilfe dankbar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.