Motion JPEG

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von MJPEG)
Wechseln zu: Navigation, Suche

Motion JPEG (MJPEG) ist ein Videocodec, bei dem jedes Einzelbild separat als JPEG-Bild komprimiert wird.

Überblick[Bearbeiten]

Die mit MJPEG komprimierten Videos haben im Gegensatz zu den mit MPEG komprimierten eine von der Bewegung des Bildes unabhängige Qualität. Wegen der hohen Datenrate (etwa 25-30 MBit/s) entsteht in etwa SVHS-Qualität der Videos. Dieser Standard wird oft bei älteren digitalen Kameras verwendet. Durch die einzelne Kompression aller Einzelbilder ist es bei diesem Format möglich, einen Video-Clip ohne die Notwendigkeit des Recodierens bildgenau zu schneiden, was bei MPEG im Allgemeinen nur bei Schlüsselbildern möglich ist.

Kompatibilität und Dateiformate[Bearbeiten]

Es gibt zahlreiche Varianten des Formats, die zum Teil nicht zueinander kompatibel sind.

Für das Quicktime-Format hat Apple zwei Arten der Kodierung definiert: MJPEG-A und MJPEG-B. Die zweite Variante ist dabei nicht mehr zum JPEG File Interchange Format kompatibel – einzelne Bilder können nicht mehr einfach aus dem Video-Stream in ein JPEG-Bild konvertiert werden, ohne die Informationen im Kopfdatenbereich der Datei zu verändern.

Kompressionsraten und Qualität[Bearbeiten]

Die Kompressionsrate liegt mit 1:5 bis 1:13 zwischen unkomprimierten Formaten wie RGB/8 (1:1) oder YCbCr/8 (1:1 - 1:3) und der MPEG-2-Kompression (ca. 1:25 bis 1:100). Bei hoher Qualität entspricht das für PAL-Video in etwa 30 MBit/s, bei Full-HD in etwa 150 MBit/s.

Im (semi-)professionellen Studiobereich wird MJPEG teilweise nach wie vor als Zwischenformat für die Postproduktion (Schnitt) eingesetzt. Viele Internet-/IP-Kameras verwenden auch dieses Format.

Bei neueren Kameras (ab ca. 2010) wird statt MJPEG üblicherweise der neuere Codec H.264 verwendet.

Anwendung[Bearbeiten]

Server[Bearbeiten]

MJPEG findet Anwendung bei Netzwerkkameras. Dabei wird der Stream häufig über das HTTP-Protokoll versendet. Damit der Client (meistens ein Webbrowser) die Daten korrekt darstellen kann, wird der spezielle MIME-Typ multipart/x-mixed-replace;boundary=… verwendet. Es folgt ein frei wählbarer String zur Trennung zwischen den einzelnen Bildern nach dem MIME-Typ boundary=. Danach folgen die einzelnen JPEG-komprimierten Bilder, getrennt durch den im MIME-Typ definierten String. Beispiel-Implementationen findet man in Cambozola[1] und MJPEG-Streamer[2].

Clients[Bearbeiten]

Häufig genutzte Clients zur Darstellung von MJPEG-Streams sind übliche Webbrowser wie zum Beispiel Firefox. Zur Zeit unterstützt der Internet Explorer keine MJPEG-Streams. Für diesen Browser existieren Lösungen wie zum Beispiel Java-Applets. Netzwerkkompatible Multimediaplayer wie VLC und MPlayer, sowie jegliche Software die sich der FFmpeg/libav-Bibliotheken bedient sind ebenfalls geeignet zur Darstellung eines MJPEG-Streams. Außerdem können die Spielekonsolen Wii von Nintendo sowie PlayStation 3 und Playstation Portable von Sony, sowie auch der Safari-Browser des iPhones von Apple Filme im MJPEG-Format ab Werk abspielen.

Weblinks[Bearbeiten]

  • MJPEG tools zum Aufnehmen und Bearbeiten von MJPEG unter Linux
  1. cambozola: Java-MJPEG-Client und -M-GIF-Server
  2. MJPG-streamer: Einfacher MJPEG-Streaming-Server