Das Blog von Benni und Jonas
  • Stay in motion – Webcam

    Geschrieben am 17. September 2009 benni 5 Kommentare
      Bilder des Typs »normal«

      Bilder des Typs »normal«

      Webcams sind eine schöne Erfindung. Nicht nur, dass man mit ihnen Videotelefonate führen kann! Besonders toll sind sie, wenn Livebilder eines Standortes ins Internet gestellt werden. In meiner Heimatstadt Coburg gibt es solch eine Webcam bspw. auf dem Marktplatz, so dass man Live vor Ort sein kann, wann immer man möchte.

      Bilder von einer Webcam in bestimmten Intervallen speichern, bzw. sobald sich etwas bewegt, ist gar nicht so schwierig wie man anfangs vielleicht denkt. Dazu gibt es sogar verschiedene Programme, von denen ich eines aus den Repositorys vorstellen möchte. Es nennt sich Motion.

      Anmerkung: Ich gehe im Folgenden nur auf die lokale Speicherung von Webcambildern ein, nicht auf das Streamen im Internet.

      Achtung: schnell gerät man in einen Bereich, der sich »Videoüberwachung« nennt, der rechtlich sehr brisant ist. Darum: lieber erstmal im Garten oder Zimmer probieren als gleich die Straße vor dem Haus ins Visier zu nehmen. ;)

      Motion lässt sich in den meisten Distributionen über ein einfaches

      sudo apt-get install motion

      bzw. die Entsprechung eines anderen Paketmanagers installieren. Im Gegensatz zu dem Programm ZoneMinder müssen hierbei nicht gleich alle PHP- und MySQL Bibliotheken heruntergeladen werden.

      Motion ist ein Programm, dass mit einem Daemon läuft, den man jedoch deaktivieren kann. Da ich dieses Programm nur getestet habe und immer wieder Konfigurationen vornahm, habe ich den Daemon gleich deaktiviert. Motion lässt sich über eine Konfigurationsdatei steuern, die sich standardmäßig in /etc/motion/ befindet. Um meinen anderen Programmen treu zu bleiben, habe ich mir allerdings im Homeordner einen Ordner namens .motion angelegt und eine neue Konfigurationsdatei geschrieben. Diese hat folgenden Inhalt:
      videodevice /dev/video1
      pre_capture 0
      auto_brightness on
      framerate 3
      daemon off
      target_dir /home/benni/motion
      locate on
      output_motion off
      output_normal on
      output_all off
      height 240
      width 320
      lightswitch 50
      v4l2_palette 0

      Pfad zum GerätWer nicht weiß, was er bei videodevice hinschreiben soll, der kann den Pfad bspw. über den Webcamautomat Cheese (sudo apt-get install cheese) erfahren: Cheese starten, BearbeitenEinstellungen und unter Kamera sieht er im Dropdown den entsprechenden Gerätepfad.

      Mögliche Einstellungen:

      Einstellung Bedeutung
      pre_capture Sekunden, die vor der Bewegung gespeichert werden
      auto_brightness Automatische Helligkeit (bei Kameras ohne eigene Regulierung)
      framerate Bilder pro Sekunde (Standard: so viele die Kamera hergibt)
      daemon Daemon starten (Standard: on)
      target_dir Speicherort der Bilder
      locate Bewegung im Bild einrahmen?
      output_motion Reines Bewegungsbild ausgeben? (s/w, da nur der Unterschied zum vorhergehenden Bild angezeigt wird, Beispiel)
      output_normal Bewegungsbild im Original ausgeben, Beispiel
      output_all Permanent Bilder speichern, auch bei Nichtbewegung
      snapshot_interval Schnappschuss in diesem Intervall speichern*
      height, width Bildauflösung
      lightswitch Helligkeitsschwankung akzeptieren
      v4l2_palette Palette, die video4linux benutzen soll**

      *) Es wird ein symbolischer Link auf jeweils den letzten Snapshot gelegt, so dass jeweils das neuste Bild über den Namen lastsnap.jpg ansprechbar ist.

      **) Motion basiert auf dem video4linux-Treiber, mit dem erkannt wird, ob sich etwas bewegt hat, oder nicht. Was die einzelnen Paletten bedeuten, sieht man in der Beispieldatei ab Zeile 31 (/etc/motion/motion.conf), allerdings unterstützen nicht alle Kameras alle Paletten.

      Wenn man nicht die voreingestellte, sondern die eigene Konfigurationsdatei starten möchte, muss man beim Startbefehl noch den Pfad dazu eingeben. Der Start sieht dann z.B. so aus:

      $ motion -c /home/benni/.motion/config.cfg
      Bilder des Typs »motion«

      Bilder des Typs »motion«

      Wenn man sich – wie ich – dazu entscheidet, keine Videos aufzunehmen (auch das ist mit Motion möglich), die Bewegungen aber nicht im Einzelbild nachvollziehen möchte, dann ist man mal wieder bei Imagemagick gut aufgehoben! Man öffnet ein Terminal und begibt sich in den Ordner, den man mit target_dir festgelegt hat. Nun tippt man folgendes ins Terminal ein und steuert nachträglich über ein Menü, das per Klick auf das Ergebnis erscheint, die Geschwindigkeit:

      $ animate *

      Alternativ kann man die Bilder auch in einem Raster anordnen, so wie auf den Beispielbildern zu sehen ist:

      $ montage -geometry +1+1 * alle.jpg

      Doch das sind noch lange nicht alle Fähigkeiten, die Motion bietet. Man kann mit seiner MySQL herumspielen, die Bilder ins Netz stellen, Videos aufnehmen (diese mit ffmpeg gleich konvertieren), Farben, Kontraste und Helligkeit einstellen, die Kamera bewegen (wenn es eine bewegliche Kamera ist), Ton einbinden, benutzerdefinierten Text einblenden und und und…

      Um Motion als eine Art Kameraüberwachung zu nutzen (Vorsicht!!), kann man bei verschiedenen Events Drittkommandos ausführen lassen. Ich bekomme z.B. ein kurzes akustisches Signal, sobald sich etwas bewegt. Hierzu fügt man nur diese Zeile in die Konfigurationsdatei ein:
      on_motion_detected echo -e "\a"
      Alternativ auch über das Paket beep. Am besten ihr testet es selbst einmal mit eurer Webcam. Die unterschiedlichsten Einstellungen für die Konfigurationsdatei findet ihr unter

      man motion

      Viel Spaß damit! :)

      PS: Dieser Artikel gehört auch zur Blogparade »Exotische Linux-Applikationen« von Roman von ubuntublog.ch

      Share and Enjoy:
      • Facebook
      • Digg
      • del.icio.us
      • Google Bookmarks
      • Identi.ca
      • MisterWong.DE
      • MySpace
      • Reddit
      • Slashdot
      • Twitter
       

      Kommentare:

      • Danke dir, nach so etwas such ich schon ne ganze weile. :D

      • motion ist eines der wohl unbekannten Juwelen. Es lässt sich auch sehr schön über den Browser konfigurieren. Sogar ein Fernzugriff ist möglich. So könnte man z.B. von der Arbeit aus das eigene Terrarium überwachen. Schön auch die Funktion, die nur dann Bilder aufnimmt, wenn sich was bewegt hat. Wer sich als kleiner Geschäftsmann keine teure Überwachungsanlage leisten kann, der kann mit motion im Prinzip dasselbe erreichen… danke, dass Du mich mal wieder auf dieses Programm gestoßen hast. Vielleicht nehme ich dies zum Anlass auf meinem Blog mal etwas ausführlicheres zu posten.
        Gruß,
        Linuxnetzer

      • Hallo,

        danke für die genaue Beschreibung der Konfiguration. Ich habe es sofort hinbekommen.
        Ich konnte damit sehen, dass meine Mitbewohnerin in meiner Abwesenheit mein Zimmer betritt und Sachen bewegt.

        Gruß Kira

      • @deadshox: Bitteschön ;-)

        @linuxnetzer: Wenn du einen Artikel schreibst, würde ich mich über einen Trackback freuen :-)

        @Kira: Die Konfiguration habe ich mit Absicht genau geschrieben, da ich mir selbst viel Arbeit erspart hätte, wenn ich eine Konfigurationsdatei für meine Bedürfnisse gefunden hätte. Leider fand ich keine, die genau meinen Ansprüchen entsprach und so bastelte ich mir selbst eine, die alles notwendige für mich behandelt :-)

        Viele Grüße,
        Benni


      1 Trackbacks / Pingbacks

      Einen Kommentar schreiben: