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. |
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
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