Commentum

Der Einfall, die Lüge, die Erdichtung

Schritt 1: Webcam anschließen:

Als erstes brauchen wir eine Webcam. Wir verbinden sie mit dem Raspberry aun einer USB-Schnittstelle und schauen einmal nach, ob die ansprechbar ist. Wir verwenden den Befehl 
lsusb

Ergebnis:

 

 


Wir sehen nun hier Geräte mit dem Namen Microdia. Auch wenn auf en angeschlossenen Webcams eigentlich der Name Hama steht. Kein Wunder, denn der Vendor (Verkäufer) scheint einen anderen Namen zu tragen. Prüfen wir das einfach einmal mittels dem Kommando nach:

lsusb -v




Wir sehen also den Vendor Microdia mit dem gleichen Schlüssel wie beim Device HD 720 P Webcam.
Und das es sich auch tatsächlich um ein Videodevice handelt, das sagt uns auch das Kommando

dmesg | grep Webcam 


 

 

 

 



Wir haben also zwei USB-Webcams angeschlossen. Aber Microdia taucht immer noch nicht auf. Das können wir auch anders ermitteln. Dazu setzen wir den Befehl
lsusb -v | grep idVendor
ein, suchen also gezielt nach den Verkäufer oder auch Herstellerangaben. 

Ergebnis:





Wir sehen also den Vendor Microdia mit dem gleichen Schlüssel wie beim Device HD 720 P Webcam.
Und das es sich auch tatsächlich um ein Videodevice handelt, das sagt uns auch das Kommando
dmesg |grep uvcvideo

welches die Geräte als UVC (Linux USB Video Class (UVC) driver) erkannt hat.

Schritt 2: Anwendungen und benötigte Pakete installieren

Nun geht es weiter mit der Installation der Software MJPG-Streamer. Diese setzt aber einige Pakete voraus.

Bringen wir erst einmal das System auf einen aktuellen Stand:

sudo apt-get update



und installieren dann die Pakete subversion-tools libjpeg8-dev imagemagick.

sudo apt-get install subversion-tools libjpeg8-dev imagemagick


Nun laden wir den Quellcode des Programms MJPG-Streamer aus dem SVN-Repository herunter. 


svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer



Nach dem Wechsel in das Quellcode-Verzeichnis können wir das Programm kompilieren.

Schritt 3: Das Programm kompilieren


Die Kompilation erfolgt ganz einfach mit
make


Sobald der Quellcode kompilert wurde, können wir mit der Installation von MJPG-Streamer beginnen:
sudo make install


Schritt 4: Das Programm ausprobieren
Nach einer Weile können wir mit dem ersten Funktionstest starten:

sudo mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -y -r 640x480 -f 15" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 8080"


Wir starten hier dem MJPG-Streamer mit einer Auflösung von 640x480 und übergeben den Stream lokal auf den Port 8080. 

Die Auflösungen und auch der Stream Port lassen sich natürlich auch anders definieren

Nun können wir unter Angabe der IP-Adresse oder des Hostnamen den Stream aufrufen.  Ohne weitere Parameter erscheint dieses Einstiegsbild:

 

Aber wir wollen ja eigentlich nur das Bild anschauen. 

Geben wir also die Daten in den  Browser ein:

http://pelobates:8080/?action=stream

  Und schon sehen wir das Ergebnis. Was man sonst noch alles mit diesem Paket anfangen kann ergibt sich aus den Beschreibungen in der Homepage.
Eine Alternative zu diesem Aufruf ist die Verwendung von VLC. VLC starten und "Netzwerkstream" (CTRL-N) auswählen. Im folgenden Dialog "http://IP-Adresse/Hostname:Port/?action=stream" eingeben und man erhält das entsprechende Bild (Stream).



Schritt 5: Den Start automatisieren

Um MJPG-Streamer nicht nach jedem Neustart wieder manuell anzustoßen basteln wir uns ein kleines Shell-Script. Wir nennen es einfach einmal mjps und speichern es im Verzeichnis /etc/init.d. Hier werden alle für den Systemstart zu berücksichtigenden Prozesse über das Init-System "systemd" gesteuert und verwaltet.

sudo nano /etc/init.d/mjps

 

Wir fügen folgenden Text ein:

#!/bin/sh
# /etc/init.d/mjpg_streamer
# Creation:
# Last Update:
# Author:
### BEGIN INIT INFO
# Provides: mjps
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: MJPG-Streamer
# Description: MJPG-Streamer zeichnet JPGs von Linux-UVC kompatiblen
Webcams auf und streamt sie als M-JPEG via HTTP.
### END INIT INFO
start()
{
echo "Starte mjpg-streamer..."
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -d
/dev/video0 -n -y -r 640x480 -f 15" \
-o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 8080"
>/dev/null 2>&1 &
}
stop()
{
echo "Stoppe mjpg-streamer..."
kill -9 $(pidof mjpg_streamer) >/dev/null 2>&1
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart}
;;
esac
exit 0


Download als Datei

Nun werden wir noch die Zugriffsrechte des Scripts angepasst:

sudo chmod 0755 /etc/init.d/mjps

 

Zum guten Schluß müssen wir nur die Runlevel-Verzeichnisse mit dem Init-Script verlinken:

sudo update-rc.d mjps defaults

Prüfen wir einmal nach, ob das auch alles korrekt verlaufen ist:

find /etc/rc* -name *mjps

 

Zum Testen bleibt nun nur der Reboot aus...

Nun wird MJPG-Streamer bei jedem Systemstart gestartet und kann mit dem Script gesteuert werden.

Eine Abfrage des Prozesses kann natürlich auch erfolgen:

ps -aef |grep mjpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

E-Mail
Infos