ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

MJPG-Streamer

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/Oxygen/camera-web.png MJPG-Streamer {en} ist ein Werkzeug für die Kommandozeile, mit dem sich Videodaten von einer Webcam oder einer anderen Videoquelle als Motion-JPEG (M-JPEG/MJPG) streamen lassen. Während moderne Netzwerkkameras einen solchen Stream automatisch erzeugen, kann mit Hilfe des Programms auch eine einfache Webcam mittels eines Rechners mit Internet-Zugang zu einer solchen umfunktioniert werden.

Voraussetzungen

Zum Betrieb eines Webstreams muss die Webcam zunächst korrekt eingerichtet sein. Bei einigen Modellen (z.B. Logitech QuickCam Pro 5000 Rev. 8ce) muss zunächst ein Treiber für v4l2 {en} (Video 4 Linux 2) installiert werden. Wenn die Kamera aber unter anderen Programmen funktioniert, entfällt dieser Schritt. Außerdem muss das Paket libjpeg-dev installiert sein.

Installation

mjpg-streamer ist nicht in den offiziellen Paketquellen enthalten.

Fremdpaket

Beim SourceForge-Projekt mjpg-streamer werden DEB-Pakete angeboten. Die unterstützten Ubuntuversionen und Architekturen werden aufgelistet. Nachdem man sie für die korrekte Ubuntuversion und Architektur geladen hat, müssen DEB-Pakete noch installiert werden.

Hinweis!

Fremdpakete können das System gefährden.

Hinweis:

Momentan gibt es nur ein aktuelles Paket für die 32-Bit-Architektur, für die 64-Bit-Architektur muss der Quellcode verwendet werden.

Selber kompilieren

Die aktuelle Quelltext wird von der Projekthomepage heruntergeladen und anschließend entpackt [2]:

tar -xzvf mjpg_streamer_* 

Im erstellten Verzeichnis mjpg-streamer wird dann aus den Quellen die Anwendung und deren Plugins gebaut [3].

cd mjpg-streamer
make clean all 

Die Anwendung kann jetzt im Terminal aus dem Verzeichnis heraus gestartet werden [4].

Benutzung/Konfiguration

Die Bedienung von mjpg-streamer erfolgt über die Kommandozeile [1]. Die Einstellungen erfolgen über die Parameter beim Aufruf. Sind keine Parameter angegeben, so wird ein Stream mit maximaler Kameraauflösung und einer Bildrate von 5fps erzeugt.

Ein typischer Aufruf sieht etwa so aus:

./mjpg-streamer -i "<Input Modul> <Input Optionen>" \
                -o "<Output Modul> <Output Optionen>" 

Ab der Version 2.0:

mjpg_streamer -i "<Input Modul> <Input Optionen>" \
                -o "<Output Modul> <Output Optionen>" 

Module

Input
ModulFunktionOptionenEingabe
input_uvc.so Liest Daten aus der Kamera -d <device> Gerätename (z.B. /dev/video0)
-r <Auflösung> Gewünschte Auflösung (z.B. 640x480)
-f <Bildwiederholrate> Framerate in Bilder pro Sekunde (z.B. 20)
-q <Bildqualität>Qualität der JPEG Kompression (z.B. 85 für 85% Bildtreue)
-y Zeichnet die Farbwerte in YUVY auf (keine MJPEG Unterstützung)

Output
ModulFunktionOptionenEingabe
output_file.so Speichert die Aufnahme in JPEG Dateien -f <Verzeichnis> Speicherort (z.B. /home/<user>/webcam/)
-d <Verzögerung> Bildintervall in Sekunden (z.B. 5)
-b <Änderung> Speichert nur bei Veränderung des Bildinhalts über n Bytes (z.B. 64)
-c <Anweisung> Führt einen Befehl nach dem Speichern des Bildes aus
output_http.so Erzeugt einen HTTP fähigen Stream -w <Verzeichnis> Speicherort der Webinterface Dateien (default ist www)
-p <Port> HTTP auf dem der Stream abzurufen ist (z.B. 8080)
-c <user:pass> Weist dem Stream einen Usernamen und ein Passwort zu

Webstream starten

Um z.B. einen Webstream von /dev/video0 auf localhost (127.0.0.1) Port 8080 mit einer Bildwiederholrate von 5fps und einer Auflösung von 352x288 zu erzeugen, der nur für den Nutzer joe (Passwort bean) zugänglich ist, wird mjpg-streamer mit den folgenden Parametern gestartet:

./mjpg-streamer -i "input_uvc.so -d /dev/video0 -f 5 -r 352x288" -o "output_http.so -w www -p 8080 -c joe:bean" 

Ab der Version 2.0:

mjpg_streamer -i "input_uvc.so -d /dev/video0 -f 5 -r 352x288" -o "output_http.so -w www -p 8080 -c joe:bean" 

Jetzt wird das Webinterface aus den im Unterordner (des aktuellen Verzeichnisses) www abgelegten Dateien erzeugt. Soll das mit dem Paket gelieferte Beispielinterface genutzt werden, gibt man -w /usr/www an. In der Konsole sollte die folgende Ausgabe erscheinen:

MJPG Streamer Version.: 2.0
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 352 x 288
 i: Frames Per Second.: 5
 i: Format............: MJPEG
 o: www-folder-path...: www/
 o: HTTP TCP port.....: 8080
 o: username:password.: joe:bean 

Um sich den Stream anzusehen, ruft man in einem Browser die Adresse http://127.0.0.1:8080/ auf. Dort kann der Stream als Standbild, Livestream und Java oder Javascript Applet abgerufen werden. Die Einbindung des Streams als Link ist problemlos möglich.

Fehlerbehebung

Could not find input/output plugin

Für den Fall, dass mjpg-streamer die Ausgabe-/Eingabemodule nicht findet:

MJPG Streamer Version.: 2.0
ERROR: could not find input plugin
       Perhaps you want to adjust the search path with:
       # export LD_LIBRARY_PATH=/path/to/plugin/folder
       dlopen: input_uvc.so: cannot open shared object file: No such file or directory

sollte versucht werden, mittels folgendem Befehl auf den im Quellverzeichnis befindlichen Unterordner plugins/ zu verweisen:

export LD_LIBRARY_PATH=/Pfad/zu/den/plugins/ 

Der Pfad muss bei der Installation in ein anderes Verzeichnis wie z.B. /opt entsprechend angepasst werden.

Unable to set format: XX.

Sollte beim Start der Aufnahme eine Meldung wie

Unable to set format: 5.
 Init v4L2 failed !! exit fatal 
 i: init_VideoIn failed

erscheinen, hilft es in der Regel, die Kamera kurz vom USB-Port abzuziehen und/oder in einen anderen Port zu stecken. Es kann aber auch sein, dass die Kamera mjpeg-stream nicht unterstützt. Hierbei hilft die Option -y, also

mjpg-stream -i "input_uvc.so -d /dev/video -y" -o "output_http.so" 

Ab der Version 2.0:

mjpg_streamer -i "input_uvc.so -d /dev/video0 -y" -o "output_http.so" 

VLC spielt nichts ab

siehe nächste Fehlerbeschreibung

no www-folder configured

Sollte im Browser die folgende Meldung erscheinen:

501: Not Implemented!
no www-folder configured

muss man den Stream unter folgender Adresse aufrufen:

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

bzw.

http://localhost:8080/?action=snapshot

ubuntuusers.local › WikiMJPG-Streamer