[Wiki] Motion JPEG

Motion JPEG, kurz auch MJPEG genannt, ist ein Video-Codec, bei dem jeder Frame einzeln im JPEG-Format gespeichert wird.

Im Gegenteil zu MPEG komprimierten Videos, bei denen unter anderem auch die Unterschiede zwischen den einzelnen Einzelbildern gespeichert werden, wird bei MJPEG komprimierten Videos jedes Einzelbild separat im JPEG-Format gespeichert. Dies bringt Vor- sowie Nachteile mit sich.

Zum einen gibt es keine Artefaktbildung bei schnellen Szenen/bewegten Bildern, zum anderen macht sich dies aber auch in der Dateigröße bemerkbar, die bei MJPEG komprimiertern Videos um einiges höher ist, als bei anderen Video-Kodierungen.
(Bei SVHS-Qualität kommen ca. 25 MBit/s bei Nutzung von MJPEG zustande.)

MJPEG kodiertes Videomaterial findet man heutzutage meistens nur noch im IP-Cam Bereich.
(IP-Cam = Netzwerkkamera)
Für Netzwerkkameras ist die MJPEG Kodierung ideal, da sie relativ wenig Rechenleistung braucht und der von der Kamera erstellte Videostream in jedem gebräuchlichen Browser abgespielt werden kann.
Desweiteren können aber auch Geräte wie iPhone, iPad, Sonys Playstation 3 oder die Nintendo Wii mit Material im MJPEG-Format umgehen.

Wie ist ein MJPEG Stream strukturiert?

Da MJPEG kodierte Videos meistens über das HTTP-Protokoll verschickt werden und in einem Webbrowser angesehen werden sollen, benötigen Sie einen speziellen MIME-Type namens “multipart/x-mixed-replace“.
Danach folgt eine weitere spezielle Zeichenfolge, die so aussieht: “;boundary=–boundary
Was hinter dem “boundary=” steht, kann vom Programmierer frei festgelegt werden. Es ist der Trenner, der später im Videostream sagt, wann ein neues Einzelbild im Datenstrom auftaucht.

Ein simpelster MJPEG Stream könnte wie folgt aussehen:

HTTP/1.0 200 OK
Server: code-bude.net beispiel server
Cache-Control: no-cache
Cache-Control: private
Content-Type: multipart/x-mixed-replace;boundary=--boundary

--boundary
Content-Type: image/jpeg
Content-Length: [länge des bildes in bytes]

[jpeg bytes schreiben]

--boundary
Content-Type: image/jpeg
Content-Length: [länge des bildes in bytes]

[jpeg bytes schreiben]

[...]

[Wiki] Motion JPEGÜber den Autor: Dieser Artikel, sowie 363 andere Artikel auf code-bude.net, wurden von Raffael geschrieben. – Seit 2011 blogge ich hier über Programmierung, meine Software, schreibe Tutorials und versuche mein Wissen, so gut es geht, mit meinen Lesern zu teilen. Zudem schreibe ich auf derwirtschaftsinformatiker.de über Themen meines Studiums.  //    • Google + • Facebook  • Twitter


Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Sie dient nur dem Spamschutz.