Motion JPEG
# Motion JPEG

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

## Überblick

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

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

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
### Server

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 und MJPEG-Streamer. Bei Überwachungskameras hat sich das Streamen per RTP-Protokoll (RFC 2435) als Standard durchgesetzt.

### Clients

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.