Motion JPEG

Motion JPEG (M-JPEG, MJPEG) – rodzina metod stratnej kompresji nagrań wideo, w których każda klatka jest kodowana niezależnie za pomocą JPEG. Jest to metoda kompresji wewnątrzklatkowej, niewykorzystująca predykcji między kolejnymi klatkami.

Motion JPEG jest wykorzystywany między innymi w kamerach internetowych, kamerach monitoringu, aparatach cyfrowych i urządzeniach przechwytujących obraz. Jego głównymi zaletami są stosunkowo niewielka złożoność kodowania i dekodowania oraz możliwość niezależnego odczytu poszczególnych klatek. Wadą jest niższa efektywność kompresji w porównaniu z metodami wykorzystującymi zależności międzyklatkowe, takimi jak H.264/AVC.

Zasada działania

W Motion JPEG każda klatka obrazu jest kompresowana oddzielnie, z wykorzystaniem algorytmów stosowanych w standardzie JPEG. W typowych implementacjach wykorzystuje się dyskretną transformację kosinusową (DCT), kwantyzację współczynników i kodowanie entropijne. Zakodowane obrazy są następnie zapisywane lub przesyłane jako sekwencja tworząca nagranie wideo.

W odróżnieniu od wielu kodeków wideo Motion JPEG nie wykorzystuje predykcji międzyklatkowej ani kompensacji ruchu. Każda klatka zawiera informacje wystarczające do jej samodzielnego zdekodowania, bez konieczności odtwarzania klatek poprzedzających lub następujących po niej.

Brak zależności między klatkami umożliwia bezpośredni dostęp do dowolnego obrazu w sekwencji oraz ułatwia operacje montażowe, takie jak cięcie nagrania w wybranym miejscu. Upraszcza również konstrukcję kodera i dekodera.

Zalety i ograniczenia

Do zalet Motion JPEG należą:

Podstawowym ograniczeniem jest brak wykorzystania podobieństw między kolejnymi klatkami. Jeżeli przez dłuższy czas przedstawiają one niemal nieruchomą scenę, Motion JPEG nadal koduje każdą z nich oddzielnie. Kodeki wykorzystujące predykcję międzyklatkową mogą w takiej sytuacji osiągać znacznie wyższy stopień kompresji.

Przy porównywalnej jakości obrazu strumień Motion JPEG wymaga zatem na ogół większej przepływności i zajmuje więcej miejsca niż materiał zakodowany nowoczesnymi kodekami międzyklatkowymi. Ponadto poszczególne klatki podlegają ograniczeniom kompresji JPEG, w tym możliwości występowania artefaktów blokowych i utraty drobnych szczegółów przy silnej kompresji.

Zastosowania

Kamery i urządzenia przechwytujące obraz

Motion JPEG jest stosowany w urządzeniach rejestrujących i przesyłających obraz, w tym w kamerach internetowych, kamerach IP, aparatach cyfrowych i urządzeniach przechwytujących sygnał wideo. Niezależne kodowanie klatek umożliwia stosowanie stosunkowo prostych układów przetwarzania obrazu.

MJPEG jest jednym z formatów transmisji obrazu przewidzianych przez specyfikację USB Video Class (UVC). Dokumentacja USB Implementers Forum obejmuje osobną specyfikację sposobu przesyłania danych Motion JPEG przez urządzenia tej klasy. Obsługa MJPEG zależy jednak od możliwości konkretnego urządzenia.

Sterownik USB Video Class dostarczany z systemem Windows obsługuje między innymi skompresowany obraz MJPEG oraz nieskompresowane formaty YUY2 i NV12.

Zapisywanie i edycja nagrań

Motion JPEG wykorzystywano między innymi w cyfrowych aparatach fotograficznych z funkcją nagrywania filmów oraz w systemach montażu nieliniowego. Niezależność klatek ułatwia wyszukiwanie wybranych fragmentów nagrania i wykonywanie operacji montażowych bez konieczności dekodowania dłuższych sekwencji obrazów.

Strumienie MJPEG mogą być przechowywane w różnych kontenerach multimedialnych, między innymi AVI i MOV. W przypadku AVI jednym ze stosowanych identyfikatorów FourCC jest MJPG.

W kontenerze MOV przewidziano dwa warianty Motion JPEG, określane jako MJPEG-A i MJPEG-B. Różnią się one sposobem organizacji zakodowanych danych, w tym wykorzystaniem znaczników JPEG.

Standaryzacja

Motion JPEG nie stanowi jednego, jednolicie zdefiniowanego formatu pliku ani kompletnego standardu kodowania wideo. Nazwa obejmuje różne implementacje wykorzystujące niezależne kodowanie kolejnych obrazów za pomocą JPEG. Poszczególne rozwiązania mogą różnić się organizacją danych, sposobem zapisu i szczegółami kodowania, co może wpływać na ich wzajemną zgodność.

Sposoby wykorzystania MJPEG zostały określone w specyfikacjach dotyczących konkretnych zastosowań. Należą do nich:

Od Motion JPEG należy odróżnić Motion JPEG 2000 (MJ2), oparty na JPEG 2000, a nie na klasycznym JPEG. Motion JPEG 2000 jest objęty normą ISO/IEC 15444-3 i definiuje między innymi format pliku przeznaczony do przechowywania sekwencji obrazów kodowanych za pomocą JPEG 2000.

Zobacz też

Przypisy

  1. 1 2 3 L. Berc, W. Fenner, R. Frederick, S. McCanne, P. Stewart, RFC 2435: RTP Payload Format for JPEG-compressed Video [online], RFC Editor [dostęp 2026-10-22].
  2. 1 2 3 4 5 6 7 Back to basics: Mechanisms used behind the scenes in video compression [online], Amazon Web Services [dostęp 2026-10-22].
  3. 1 2 3 4 5 6 7 MJPEG (Motion JPEG) Video Codec [online], Library of Congress [dostęp 2026-10-22].
  4. 1 2 Video Class v1.5 document set [online], USB Implementers Forum [dostęp 2026-10-22].
  5. ↑ USB Video Class driver overview [online], Microsoft Learn [dostęp 2026-10-22].
  6. 1 2 3 Video sample data [online], Apple Developer Documentation [dostęp 2026-10-22].
  7. ↑ Miscellaneous Video Subtypes [online], Microsoft Learn [dostęp 2026-10-22].
  8. ↑ ISO/IEC 15444-3:2007 – Information technology — JPEG 2000 image coding system: Motion JPEG 2000 [online], International Organization for Standardization [dostęp 2026-10-22].