Motion JPEG

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

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

Die mit MJPEG komprimierten Videos haben im Gegensatz zu den mit MPEG komprimierten eine von der Bewegung des Bildes unabhängige Qualität. Dieser Standard wird oft bei Überwachungskameras und älteren Digitalkameras 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 an I-Frames (Schlüsselbildern) möglich ist.

Kompatibilität und Dateiformate

[Bearbeiten | Quelltext 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, Qualität und Verwendung

[Bearbeiten | Quelltext 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.

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] Bei Überwachungskameras hat sich das Streamen per RTP-Protokoll (RFC 2435[3]) als Standard[4] durchgesetzt.

Häufig genutzte Clients zur Darstellung von MJPEG-Streams sind übliche Webbrowser (Safari, Google Chrome, Mozilla Firefox und Microsoft Edge unterstützen MJPG inzwischen nativ). Netzwerkkompatible Multimediaplayer wie VLC und MPlayer sowie jegliche Software, die sich der FFmpeg-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.

  • sourceforge.net – MJPEG tools zum Aufnehmen und Bearbeiten von MJPEG unter Linux

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. cambozola. (Memento des Originals vom 31. März 2009 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.charliemouse.com Java-MJPEG-Client und -M-GIF-Server. charliemouse.com
  2. MJPG-streamer: Einfacher MJPEG-Streaming-Server
  3. RFC: 2435 – RTP Payload Format for JPEG-compressed Video. Oktober 1998 (englisch).
  4. ONVIF Streaming Specification. (PDF) In: onvif.org. Juni 2011, abgerufen am 23. Dezember 2015 (englisch).