Motion mit mehreren Kameras

Beim Durchstöbern meiner alten Computersachen bin ich kürzlich auf zwei etwas ältere Webcams gestoßen. Bevor ich die weiter verstauben lasse, habe ich mir gedacht, diese an meinen Raspberry Pi anzuschließen, auf dem bereits Motion läuft. In meinen beiden früheren Beiträgen habe ich bereits aufgezeigt, wie man das Rpi-Kameranmodul an den kleinen PC anschließt und konfiguriert.

Ich habe die folgenden beiden Webcams getestet

  • Logitec QuickCam for Notebook Deluxe
  • Logitec QuickCam Pro 4000

Ich habe mich für die Erste entscheiden, die QuickCam for Notebook Deluxe

Eigentlich ist die Konfiguration einer zweiten Kamera keine große Sache. Es wird neben einer motion.conf-Datei für jede Kamera eine weitere Konfigurationsdatei benötigt. Die Konfigurationsdatei für jedde angeschlossene Kamera heißt threadx.conf ( x ist durch eine Zahl zu ersetzen).
motion-thread

Ich habe mir die Konfiguration recht einfach gemacht. An meinem Pi war bereits das Kamera-Modul angeschlossen und sämtliche UV4L-Pakete installiert.
Deshalb funktionieren die nachfolgenden Befehle bei mir „out-of-the-box“ und meine Webcam wurde auch sofort erkannt.

Mit dem Befehl kann man prüfen, ob die USB-Kamera auch vom Pi erkannt wird

lsusb


In der Liste sollte irgendwo die Logitec-Kamera auftauchen.

Eine Überprüfung wo die beiden Kameras, Webcam und Pi-Kameraboard, zu finden sind ist mit dem Befehl möglich.

v4l2-ctl --list-devices

Bei mir wurde die USB-Kamera auf /dev/video0 eingebunden und das Pi-Kameraboard war auf /dev/video1 zu finden. Diese beiden Informationen sind für die weitere Konfiguration zwingend erforderlich.

Thread-Dateien anlegen

Ich habe mir das Leben einfach gemacht und meine bestehende motion.conf-Datei einfach zweimal kopiert und in thread1.conf und thread2.conf umbenannt. Anschließend habe ich die motion.conf editiert. Dort müssen die folgenden Parameter auskommentiert werden. Diese sind pro Kamera in der jeweiligen thread-Datei anschließend einzutragen.

# Videodevice to be used for capturing  (default /dev/video0)
# for FreeBSD default is /dev/bktr0
# CHANGED
; videodevice /dev/video0

# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
# CHANGED
;target_dir /mnt/pics/motion

# The mini-http server listens to this port for requests (default: 0 = disabled)
# CHANGED
;webcam_port 8081

Besonders wichtig, in der motion-conf findet ihr am Ende die Einstellungen für die thread-Dateien.

# Remember: If you have more than one camera you must have one
# thread file for each camera. E.g. 2 cameras requires 3 files:
# This motion.conf file AND thread1.conf and thread2.conf.
# Only put the options that are unique to each camera in the
# thread config files. 
; thread /usr/local/etc/thread1.conf
; thread /usr/local/etc/thread2.conf
; thread /usr/local/etc/thread3.conf
; thread /usr/local/etc/thread4.conf


Tragt ein, wo ihr die thread-Dateien für eure Kamera ablegt, damit Motion diese auch findet. Dabei könnt ihr den Pfad beliebig wählen, z.B. das Home-Verzeichnis eures Benutzers.
; thread /usr/local/etc/thread1.conf
wird dann zu
thread /usr/local/etc/thread1.conf

thread1.conf

In dieser Datei müsst ihr nur die folgenden Parameter prüfen und auf die Kamera abstimmen

videodevice /dev/video0

target_dir /mnt/pics/motion1

webcam_port 8081

text_left Camera 1

# Image width (pixels). Valid range: Camera dependent, default: 352
width Wert-Eintragen

# Image height (pixels). Valid range: Camera dependent, default: 288
height Wert-Eintragen


Auch die Eisntellngen für den E-Mail-Versand, solltet ihr das aktiviert haben, lässt sich individuell pro thread-Datei anpassen.

thread2.conf

videodevice /dev/video1

target_dir /mnt/pics/motion2

webcam_port 8082

text_left Camera 2

# Image width (pixels). Valid range: Camera dependent, default: 352
width Wert-Eintragen

# Image height (pixels). Valid range: Camera dependent, default: 288
height Wert-Eintragen

Nach den Anpassungen lässt sich Motion wie gewohnt starten und die Kamera-Streams auf den beiden Ports 8081 und 8082 anschauen.

Bildquelle: raspberrypi.org

5 Antworten auf „Motion mit mehreren Kameras“

  1. Hallo Stefan,danke für den Artikel und deine Mühe. Bei mir wird demnächst auch mal wieder eine Kamera an den Pi angeschlossen. Das es auch mit mehreren funktioniert ist gut zu wissen. Wie sah es dabei mit der Performance aus?

  2. Hallo Tony,

    die Performance ist eigentlich ganz gut. Die Qualität der Bilder ist halt abhängig von der verwendeten Kamera. So eine alte Webcam, wie ich nutze, kann natürlich nicht mit dem RPi-Kamera-Modul mithalten. Jedoch ist der Stream recht brauchbar und die aufgenommenen Bilder auch ganz okay.
    Der Pi schafft die Verarbeitung der Bilder auch ganz gut und knickt nicht unter einer zu hohen Last zusammen.

  3. Hallo,

    Artikel ist für den einfachen Fall … 1x usb-cam + 1x pi-cam.
    Wenn 2 bis 4 usb-cam’s angeschlossen werden sollen, ist es nicht mehr einfach.
    Die USB-ports / der pi verarbeitet nur eine cam, es muss also umgeschaltet werden, was mit einer gewissen Zeitspanne erfolgt und für eine Überwachung ungeeignet ist.

  4. Hi. i am trying to follow your guiode to build my system with an onboard camera and a usb camera. Here is the output of the system that it can see the cameras:pi@rpimqtt:~ $ v4l2-ctl –list-devicesmmal service 16.1 (platform:bcm2835-v4l2):        /dev/video0Microsoft® LifeCam HD-3000: Mi (usb-20980000.usb-1):        /dev/video1pi@rpimqtt:~ $i can grab video and photos by using raspistill and fswebcam to check if the cameras work correctly. here is the motion.conf filedaemon onprocess_id_file /var/run/motion/motion.pidsetup_mode offlogfile /var/log/motion/motion.loglog_level 6log_type allv4l2_palette 17input -1norm 0frequency 0power_line_frequency -1rotate 0width 1280height 960framerate 80minimum_frame_time 0netcam_keepalive offnetcam_tolerant_check offrtsp_uses_tcp onauto_brightness offbrightness 0contrast 0saturation 0hue 0roundrobin_frames 1roundrobin_skip 1switchfilter offthreshold 1500threshold_tune offnoise_level 32noise_tune ondespeckle_filter EedDlsmart_mask_speed 0lightswitch 0minimum_motion_frames 1pre_capture 5post_capture 5event_gap 60max_movie_time 0emulate_motion offoutput_pictures onoutput_debug_pictures offquality 75picture_type jpegffmpeg_output_movies offffmpeg_output_debug_movies offffmpeg_timelapse 0ffmpeg_timelapse_mode dailyffmpeg_bps 400000ffmpeg_variable_bitrate 0ffmpeg_video_codec mpeg4ffmpeg_duplicate_frames trueuse_extpipe offsnapshot_interval 0locate_motion_mode offlocate_motion_style boxtext_right %d-%m-%Y\n%T-%qtext_left rpi0w_CAMERA %ttext_changes offtext_event %Y%m%d%H%M%Stext_double offtarget_dir /home/pi/camera_imagessnapshot_filename %v-%Y%m%d%H%M%S-snapshotpicture_filename %Y_%m_%d/%v-%d%m%Y_%H%M%S-%qmovie_filename %Y_%m_%d/%v-%d%m%Y%_H%M%S-%qtimelapse_filename %d%m%Y-timelapseipv6_enabled offstream_port 8081stream_quality 50stream_motion offstream_maxrate 1stream_localhost offstream_limit 50stream_auth_method 0webcontrol_port 8080webcontrol_localhost offwebcontrol_html_output ontrack_type 0track_auto offtrack_iomojo_id 0track_step_angle_x 10track_step_angle_y 10track_move_wait 10track_speed 255track_stepsize 40quiet oncamera /etc/motion/camera1-dist.confcamera /etc/motion/camera2-dist.conf#################################################camera1-dist.confcamera_id = 1videodevice /dev/video0input -1text_left CAMERA 1picture_filename CAM1_%v-%Y%m%d%H%M%S-%qstream_port 8081#################################################camera2-dist.confcamera_id = 2videodevice /dev/video1input 1text_left CAMERA 2picture_filename CAM2_%v-%Y%m%d%H%M%S-%qstream_port 8082###################################################if i go to http://IP:8080 i see twice the onboard camera and the usb it says unable to open camerahttps://ibb.co/nfgNyPB

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.