Information
Webcam mit mjpg_streamer
- Details
- Kategorie: Linux
- Veröffentlicht am Dienstag, 26. Juli 2011 18:58
- Geschrieben von Dirk Hahn
- Zugriffe: 284
Installation
Die Installation des Servers, der den Streaming-Input liefert, geht unter Ubuntu recht einfach zur Hand. Leider sind die dafür erforderlichen Linux-Pakete derzeit nicht in der Standardpaketen von Ubuntu (Version 11.x) enthalten. Über Sourceforge werden jedoch Debian-Pakete zur Verfügung gestellt, die eine Installation recht einfach ermöglich. Wer es noch aufwendiger mag, kann die Pakete auch selbst Compilieren. Dazu ist vielleicht der Artikel im Ubuntu-Wiki ganz hilfreich.Wer mit der manuellen Installation von Debian-Paketen nicht vertraut ist, dem wird ebenfalls im Ubuntu-Wiki geholfen.
Webcam
Problematisch gestaltet sich unter Linux leider immer wieder der Hardware-Support für diverses Zubehör. Dazu zählen auch die Webcams verschiedener Hersteller, für die oft keine Linux-Treiber vom Hersteller selbst angeboten werden. Wer eine Webcam unter Linux betreiben will, ist daher gut beraten VOR dem Kauf einen Blick in die Liste der NICHT untunterstützten Geräte zu werfen, bevor sich das gute Stück direkt als Fehlinvestition entpuppt. Grundsätzlich eine gute Wahl sind Cams, die vom V4L2-Treiberpaket unterstützt werden. Dazu zählen z.B. einige Logitec-Cams.Ich selbst benutze eine LogiTech QuickCam 5000 und bin mit der Einsetzbarkeit unter Ubuntu sehr zufrieden.
mjpg_streamer manuell starten
Sind die Hardwarevoraussetzungen erfüllt und wurde das mjpg_streamer-Paket erfolgreich installiert, kann man den ersten Start wagen. Dazu sollte man sich anschauen, unter welchem Namen das Gerät gemoutet wurde. Auf der Kommandozeile kann uns dazu z.B. eine Liste der eingehängten Devices weiterhelfen:
lsusb
/dev/video0 eingehängt. Entsprechend muss ich dies mjpg_streamer beim Aufruf auch mitteilen, damit dieser nicht ins Leere greift und dann allergisch mit Fehlermeldungen umsich wirft:
mjpg_streamer -i "input_uvc.so -d /dev/video0 -y" -o "output_http.so -p 8090 -w localhost"
localhost aufruft. Wie zu erwarten ist, ist dazu der Aufruf auf Port 8090 notwendig wie mjpg_streamer beim Start mitgeteilt wurde.
http://localhost:8090/?action=stream
http://localhost:8090/?action=snapshot
mjpeg_streamer automatisch starten lassen
Der automatisierte Weg eine Webcam wie oben dargestellt starten zu lassen, geht über ein Start-Script, dass beim Starten des Systems im entsprechenden runlevel aufgerufen wird. Wer nicht ganz sicher ist, wie runlevel unter Linux gesteuert werden und wozu sie gut sind, kann diese Info erGooglen. Ich möchte hier nur kurz darstellen, was in der oben genannten Konfiguration an weiteren Schritten notwendig ist, um die Automatisierung gelingen zu lassen.Datei für das zu erzeugende Startscript anlegen:
sudo touch /etc/init.d/mjpg_streamer
Zugriffsrechte für das Script setzen:
sudo chmod 755 /etc/init.d/mjpg_streamer
Das Startscript soll die Funktionen start | stop | restart unterstützen, in runlevel 2 gestartet werden und muss aufgrund der Descriptoren-Konvention selbige Information im Kopf der Datei enthalten. Entsprechend lautet der Code der Startdatei
/etc/init.d/mjpg_streamer wie folgt:
#! /bin/sh
### BEGIN INIT INFO
# Provides: Starting / stopping / restarting mjpg_streamer
# Required-Start:
# Required-Stop:
# Default-Start: 2
# Default-Stop: 0 1 6
# Short-Description: mjpg_streamer script
# Description: Script to start stop or restart mjpg_streamer
### END INIT INFO
# Author: Dirk Hahn
# Aktionen
case "$1" in
start)
mjpg_streamer -i "input_uvc.so -d /dev/video0 -y" -o "output_http.so -p 8090 -w localhost" -b &
;;
stop)
kill -9 `pidof mjpg_streamer`
;;
restart)
kill -9 `pidof mjpg_streamer`
sleep 3
mjpg_streamer -i "input_uvc.so -d /dev/video0 -y" -o "output_http.so -p 8090 -w localhost" -b &
;;
esac
exit 0
sudo update-rc.d /etc/init.d/mjpg_streamer defaults
update-rc.d: warning: mjpg start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (5)
Adding system startup for /etc/init.d/mjpg.sh ...
/etc/rc0.d/K20mjpg.sh -> ../init.d/mjpg.sh
/etc/rc1.d/K20mjpg.sh -> ../init.d/mjpg.sh
/etc/rc6.d/K20mjpg.sh -> ../init.d/mjpg.sh
/etc/rc2.d/S20mjpg.sh -> ../init.d/mjpg.sh
/etc/rc3.d/S20mjpg.sh -> ../init.d/mjpg.sh
/etc/rc4.d/S20mjpg.sh -> ../init.d/mjpg.sh
/etc/rc5.d/S20mjpg.sh -> ../init.d/mjpg.sh
Anschließend Rechner rebooten mit
sudo shutdown -r now
Weiterführende Links
Doku mit Beispielen: Andys BlogUbuntu-Doku und Installation: Ubuntu-Wiki
Installationsbeispiel: Rudis-Wiki

