MjpegStreamer

Aus Linupedia.org
Wechseln zu: Navigation, Suche

MjpegStreamer

Ein einfaches Hilfsprogramm zum Streamen von Bildern oder Video per HTTP. Dabei wird auch der Videostrom als Mjpeg-Bilder verschickt und belastet auf diese Weise den sendenden Rechner nicht wesentlich. Erst wenn man Bilder größer 1000x1000 mit mehr als 20 Bildern/Sekunde sendet, kommt ein 600Mhz-Rechner an seine Grenzen.


Projektseiten

Die Vorstellung des Programms:

http://sourceforge.net/apps/mediawiki/mjpg-streamer/index.php?title=Main_Page

Die Downloadseite:

http://sourceforge.net/projects/mjpg-streamer/files/mjpg-streamer/

Wer Debian oder Derivate davon benutzt, kann gleich das passende Paket benutzen (ohne Gewähr), ansonsten muss man selber Comilieren. Aber das geht leicht wie folgt:


Installation

Vorbereitung: es muss das Paket 'libjpeg-devel' installiert sein!

Lade Dir die Sourcen herrunter und packe sie aus in einem Ordner Deiner Wahl. Ich nehme jetzt mal im Beispiel "Test". Benenne den ausgepackten Ordner um von "mjpeg_streamer-v-x.x" um in "mjpegstreamer", dann hast Du es gleich einfacher. Jetzt öffnest Du eine Konsole und wechselst in genau den Ordner:

cd Test/mjpegstreamer

und

make clean all

Sofern das fehlerfrei durchläuft, kannst Du gleich weitermachen mit dem Test:

./start.sh

Die beiden Zeichen "./" zeigen der Bash an, dass es den Befehl genau hier zu suchen hat und nicht wie üblich in /usr/bin oder ähnlich. Das ist später noch wichtig.

Falls der Befehl nicht ausgeführt wird: ist das Script ausführbar??? Wenn nicht, dann bitte ändern. Ist die Webcam angeschlossen?

Wenn alles klappt, dann startet mjpegstreamer mit den Standard-Einstellung den eigenen HTTP-Server.

Starte mal Firefox und gib in der Adresszeile ein:

localhost:8080

Es sollte eine Webseite erscheinen, in dem ein kleines Bild der Kamera zu sehen ist. Sieh Dich auf der Seite um. Wenn Du auf dieser Maschine erlaubst, dass per HTTP auf sie zugegriffen werden darf oder wenn die Firewall wg. "Interner Zone" abgeschaltet ist, dann kannst Du von jedem passenden anderen Rechner auf diesen Videostrom zugreifen:

IP-Nummer:8080

wobei IP-Nummer die vom diesem Rechner ist oder

hostname:8080


Hilfetexte

Es ist ein wenig mühsam, diese Texte dem Program zu entlocken, deshalb habe ich sie hier mal versammelt.

Mjpegstreamer

-----------------------------------------------------------------------
Usage: ./mjpg_streamer
 -i | --input "<input-plugin.so> [parameters]"
 -o | --output "<output-plugin.so> [parameters]"
[-h | --help ]........: display this help
[-v | --version ].....: display version information
[-b | --background]...: fork to the background, daemon mode
-----------------------------------------------------------------------
Example #1:
To open an UVC webcam "/dev/video1" and stream it via HTTP:
 ./mjpg_streamer -i "input_uvc.so -d /dev/video1" -o "output_http.so"
-----------------------------------------------------------------------
Example #2:
To open an UVC webcam and stream via HTTP port 8090:
 ./mjpg_streamer -i "input_uvc.so" -o "output_http.so -p 8090"
-----------------------------------------------------------------------
Example #3:
To get help for a certain input plugin:
 ./mjpg_streamer -i "input_uvc.so --help"
-----------------------------------------------------------------------
In case the modules (=plugins) can not be found:
* Set the default search path for the modules with:
  export LD_LIBRARY_PATH=/path/to/plugins,
* or put the plugins into the "/lib/" or "/usr/lib" folder,
* or instead of just providing the plugin file name, use a complete
  path and filename:
  ./mjpg_streamer -i "/path/to/modules/input_uvc.so"
-----------------------------------------------------------------------

input_uvc.so

---------------------------------------------------------------
Help for input plugin..: UVC webcam grabber
---------------------------------------------------------------
The following parameters can be passed to this plugin:
[-d | --device ].......: video device to open (your camera)
[-r | --resolution ]...: the resolution of the video device,
                         can be one of the following strings:
                         QSIF QCIF CGA QVGA CIF VGA 
                         SVGA XGA SXGA 
                         or a custom value like the following
                         example: 640x480
[-f | --fps ]..........: frames per second
[-y | --yuv ]..........: enable YUYV format and disable MJPEG mode
[-q | --quality ]......: JPEG compression quality in percent 
                         (activates YUYV format, disables MJPEG)
[-m | --minimum_size ].: drop frames smaller then this limit, useful
                         if the webcam produces small-sized garbage frames
                         may happen under low light conditions
[-n | --no_dynctrl ]...: do not initalize dynctrls of Linux-UVC driver
[-l | --led ]..........: switch the LED "on", "off", let it "blink" or leave
                         it up to the driver using the value "auto"
---------------------------------------------------------------

output_http.so

---------------------------------------------------------------
The following parameters can be passed to this plugin:
[-w | --www ]...........: folder that contains webpages in 
                          flat hierarchy (no subfolders)
[-p | --port ]..........: TCP port for this HTTP server
[-c | --credentials ]...: ask for "username:password" on connect
[-n | --nocommands ]....: disable execution of commands
---------------------------------------------------------------

Startbefehle

Einfacher Start mit Standard-Einstellungen:

./mjpg_streamer -o "output_http.so -w ./www"

Etwas mehr:

./mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 800x600 -f 15" -o "output_http.so -w ./www"

Wenn diese Befehle im Startscript stehen, dann sind sie so in Ordnung. Wenn Du aber z.B. den zweiten Befehl auf der Konsole ausprobieren willst, dann muss er so lauten:

./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -r 800x600 -f 15" -o "./output_http.so -w ./www"

sonst werden die Unterbefehle input_uvc.so und output_http.so nicht in diesem Verzeichnis gesucht.

Wenn das so läuft, dann herzlichen Glückwunsch. Ruf doch mal htop oder xosview auf, damit Du mal sehen, kannst, wie sehr der Prozessor damit belastet wird.

Autor: Hartmut Krummrei

Zurück zu USB

Zurück zur Hauptseite