www.eprace.edu.pl » webtv » Przegląd technologii » Metody kompresji i przechowywania filmów wideo

Metody kompresji i przechowywania filmów wideo

Jak to się zaczęło?

Historia animacji komputerowych sięga lat 70. XX wieku. Wtedy komputery osiągnęły moc obliczeniową i rozmiary pamięci pozwalające wyświetlać sekwencje zapisanych obrazków. Ponieważ powszechne w użyciu były jedno-bitowe wyświetlacze monochromatyczne, to wyświetlane przez nie animacje przedstawiały obrazy tylko za pomocą dwóch kolorów: białego i czarnego. Żaden format zapisu animacji monochromatycznych nie zdobył na tyle popularności, aby mieć wpływ na przyszłe standardy zapisu. Jednak ducha tamtej mody można dostrzec do dziś w animowanych kursorach myszki (patrz rysunek 1)

Rysunek 1: Kursor w kształcie klepsydry z animowanym przesypującym się piaskiem

lub ikonkach w monochromatycznych telefonach komórkowych.

W latach 80. na komputerach klasy IBM PC najszerzej stosowanym sposobem zapisu animacji był format „gl” z programu GRASP [grasp] (ang. GRaphic Animation System for Professionals, patrz rysunek 2) .

Rysunek 2: GRASP najpopularniejszy program do animacji na PC w latach 80.

Mimo iż format „gl” dzierży palmę pierwszeństwa, żaden jego potomek nie dotrwał do dziś.

GIF

Pierwszym formatem zapisu animacji, który zdobył uznanie i popularność, był GIF. Jest to format zapisu obrazów statycznych. Firma CompuServe, która jest autorem tego standardu, przedstawiła go w 1987 roku w wersji GIF87a. 2 lata później pojawiła się wersja GIF89a. Została ona rozbudowana w porównaniu do poprzedniej o możliwości przechowywania kilku obrazów w jednym pliku i przechowywania metadanych, które mogą służyć do kontroli odtwarzanych obrazów. Dzisiaj wszyscy znamy GIF-y głównie ze stron WWW, gdzie służą jako przyciski i drobne ozdobniki.

FLI, FLC

„Fliki”, jak utarło się określać pliki w formatach FLI i FLC, to format zapisu animacji, którego rozkwit przypada na początek lat 90. ubiegłego wieku. Ojcostwo tego standardu przypisuje się firmie Autodesk, która jest autorem programów „Autodesk Animator” i „Autodesk Animator Pro” (patrz rysunek 3).

Rysunek 3: klatka z filmu demonstrującego możliwości programu Autodesk Animator

FLI obsługiwał tylko obraz o rozmiarach 320x200 pikseli i 256 kolorową paletę (8 bitów na piksel). W FLC, który jest rozwinięciem FLI, rozdzielczość pikseli jest dowolna – definiowana w nagłówku, natomiast kolor może być zapisywany za pomocą 15 bitów na piksel. W obu wersjach do kompresji obrazu stosuje się algorytm RLE (ang. Run-length Encoding), ale ma to ograniczony sens przy kolorach RGB, ponieważ może prowadzić do nadmiernego rozrostu pliku.

FLI jest pierwszym formatem, w którym zastosowano tzw. klatki delta. Są to takie klatki filmu, które nie zostają zapisane w pełnej jakości obrazu, ale są wyliczane z poprzednich lub następnych klatek. W przypadku flików tylko pierwsza klatka filmu jest klatką kluczową, zawierającą zapisany pełny obraz. Pozostałe klatki zawierają zapisane tylko te piksele, które zmieniły się w porównaniu z poprzednią klatką. Wadą zastosowania tylko jednej klatki kluczowej i wyliczania następnej zawsze z poprzedniej jest brak możliwości przewijania – przeskakiwanie klatek powoduje powstanie w odtwarzaczu „kaszy”.

Zaletami flików są bardzo małe wymagania sprzętowe przy odtwarzaniu i doskonała jakość w przypadku filmów przedstawiających schematy, diagramy, ruchomy tekst i inne animacje zawierające obrazy złożone z dużych jednobarwnych powierzchni. Mimo tych zalet format ten nie jest już stosowany i został całkowicie wyparty przez pochodne formatu MPEG.

Kodeki

Kodek to skrót od słów kodowanie i dekodowanie. Tym terminem określa się oprogramowanie odpowiedzialne za skompresowanie i zapisanie oraz odczyt i dekompresję strumienia wideo.

W standaryzację kodeków zaangażowały się dwie duże instytucje normalizacyjne: ISO i ITU-T (Międzynarodowa Unia Telekomunikacji). Historię publikowanych przez nie standardów przedstawia diagram 4.

Rysunek 4: historia kodeków stosowanych w przemyśle – źródło: [Sullivan]Sullivan

Ponieważ istnieje ogromna liczba kodeków, zarówno stworzonych przez międzynarodowe instytucje, jak i przez amatorów, przedstawione zostaną tylko najważniejsze z nich.

Standard H.261

Ten mało znany standard został opracowany z myślą o przesyłaniu wideo-rozmów i wideokonferencji. Potrafi przesyłać ruchome obrazy o rozmiarach 352x288 pikseli (CIF – Common Intermediate Format) i 176x144 pikseli (QCIF – Quarter CIF). Metody kompresji zastosowane w tym standardzie stały się podstawą dla późniejszych rozwiązań, takich jak MPEG, MPEG-2 i MPEG-4. Najważniejsze rozwiązania w H.261 to:

• kompensacja ruchu bloków 16x16 pikseli – patrz diagram 5,

• dyskretna transformata cosinusowa (DCT) na blokach 8x8 pikseli – metoda sprawdziła się w kompresji J-PEG,

• skanowanie zygzakiem.

Rysunek 5: jednokierunkowa kompensacja ruchu – źródło: [Sullivan]Sullivan

Rozmiary strumienia były przygotowane z myślą o przesyłaniu przez łącza ISDN – ich szybkość była wielokrotnością 64 kbit/s (od 64 do 2048 kbit/s). Międzynarodowa Unia Telekomunikacji (ITU-T) zatwierdziła standard H.261 w 1990 roku [Sullivan].

Przemysłowe standardy kodowania wideo

Rysunek 6: dwukierunkowa kompensacja ruchu – źródło: [Sullivan]Sullivan

• MPEG – używany w płytach VideoCD, zapewnia jakość porównywalną z taśmą VHS. Najważniejszą wartością dodaną w porównaniu do H.261 jest dwukierunkowa kompensacja ruchu (patrz diagram 6), w której klatki „B” są wyliczane nie tylko z poprzedniej, ale też z następnej klatki.

• Motion JPEG – nieformalny standard oznaczający strumień MPEG, MPEG-2 lub Quicktime, całkowicie pozbawiony kompresji międzyklatkowej (np. kompensacji ruchu) – składający się wyłącznie z klatek „I” (patrz diagramy 5 i 6). Inaczej mówiąc, jest to film złożony z obrazków JPEG poukładanych jeden za drugim. Ponieważ zapis tego rodzaju strumienia nie wymaga dużej mocy obliczeniowej to format ten znalazł zastosowanie w urządzeniach, takich jak kamerki internetowe.

• MPEG-2 (H.262) – nosi dwie nazwy nadane mu odpowiednio przez ISO i ITU-T i jest pierwszym standardem kodowania filmów uzgodnionym wspólnie przez obie organizacje. Jest obecnie powszechnie wykorzystywany – między innymi na płytach DVD-Video oraz w cyfrowej telewizji DVB. Najważniejszymi cechami dodanymi w porównaniu do MPEG-1 są: wsparcie dla zapisu filmu z przeplotem (tak, jak to robią analogowe kamery) oraz wsparcie dla różnych sposobów skalowania obrazu. Do prawidłowego działania MPEG-2 wymaga strumienia danych o szybkości co najmniej 2-3 Mbit/s. W przypadku DVD jest to 6-8 MBbit/s.

• H.263 – to kodek stworzony z myślą o wideokonferencjach, który pod względem jakości, wydajności kompresji i zapotrzebowania na przepustowość łącza przewyższa swoich poprzedników. Najważniejsze pomysły zastosowane w H.263 to korekcja błędów i nadmiarowe klatki.

• MPEG-4 – to kodek, który bazował na H.263, ale dodał do niego dużo zaawansowanych rozwiązań. Został opublikowany jako zespół pod-standardów „ISO 14496”.

Zyskał popularność dzięki optymalizacji rozmiaru pliku i jakości umieszczonego w nim filmu. Dzięki temu umożliwiał zgranie zawartości płyt DVD-Video do plików o względnie mniejszych rozmiarach – z zachowaniem wysokiej jakości. MPEG-4 został zaimplementowany między innymi w kodekach DivX, Xvid i 3vix (patrz rysunek 7). Teoretycznie różne implementacje tego samego kodeka powinny dawać w rezultacie obraz tej samej jakości, niestety tak nie jest. Według testów przeprowadzonych przez serwis Doom9 najwyższą jakością odznacza się darmowa implementacja Xvid [doom9].

Rysunek 7: Logotypy popularnych kodeków stosowanych w sieciach P2P. Xvid jest darmową implementacją komercyjnego DivXa.

• H.264 (MPEG-4 AVC) – to drugi po MPEG-2 standard uzgodniony wspólnie przez ISO i ITU-T oraz noszący podwójną nazwę. Opisuje go norma „ISO 14496-10” i dlatego bywa też mylnie nazywany MPEG-10. Celem przyświecającym twórcom tego zestawu regulacji było:

• poprawienie efektywności kodowania,

• uzyskanie większej odporności na błędy (np. na utratę pakietów),

• zachowanie zdolności działania przy niskiej szybkości transferu,

• przyjazność sieciowa, która oznacza, że film zakodowany tym kodekiem może być przenoszony przez różne protokoły sieciowe i zapisywany w wielu formatach plików (kontenerach).

Film w wysokiej rozdzielczości (HD) zakodowany za pomocą H.264 może zachować tę samą jakość co MPEG-2, wymagając tylko połowy jego pasma przepustowości. Należy jednak zwrócić uwagę, że do prawidłowego działania – podobnie jak MPEG-2 – wymaga strumienia o przepustowości co najmniej 2-3 Mbit/s [Jan Rychter].

MPEG-4 AVC to cały zespół różnorodnych norm przewidujących 4 profile kodowania:

1. Baseline,

2. Main,

3. Extended,

4. High Profile.

Mimo że oficjalne zatwierdzenie standardu nastąpiło w marcu 2003 roku, do dzisiaj trwają prace nad różnymi jego rozszerzeniami, które zwiększają elastyczność i możliwość profesjonalnych zastosowań tego kodeka. W tej chwili jest on używany w:

• odtwarzaczach płyt Blue-ray jako jeden z 3 obowiązkowo obsługiwanych kodeków,

• telewizji cyfrowej DVB – w Polsce rekomendowany jako norma dla telewizji naziemnej,

• sprzedaży filmów przez internet w sklepie iTunes firmy Apple,

• oprogramowaniu Flash firmy Adobe (pełna implementacja od wersji 10).

Można się spodziewać, że H.264 znajdzie powszechne zastosowanie na całym świecie, a jego popularność przebije obecnego lidera – MPEG-2.

Kodeki komercyjne

• RealVideo – to kodek firmy RealNetworks, który został dostosowany do przesyłania telewizji na żywo przez protokół RTSP, a także jest zapisywany w kontenerach „rm” tej samej firmy. Bazą technologiczną do rozwoju rodziny kodeków RealVideo były standardy H.263 i H.264. Do odtwarzania filmów w tym standardzie potrzebny jest odtwarzacz RealPlayer (patrz rysunek 8) lub HelixPlayer. Niestety pierwszy z nich został uznany za złośliwe oprogramowanie (ang. malware), a drugi nie jest już rozwijany.

Rysunek 8: Logotypy produktów komercyjnych: RealPlayer firmy RealNetworks i WindowsMedia firmy Microsoft.

• WMV – Windows Media Video (patrz rysunek 8) to rodzina kodeków firmy Microsoft, których technologia wywodzi się ze standardu MPEG-4. Obecnie występują 3 wersje tego produktu: WMV7, WMV8 i WMV9.

• VC-1 (WMV9AP) – to kodek Windows Media Video 9 Advanced Profile firmy Microsoft, który został opublikowany jako standard przez organizację SPMTE. Jest to rozbudowana wersja kodeka WMV9, ale nie jest z nim całkowicie zgodna. VC-1 stał się jednym z trzech obowiązkowych kodeków wymaganych od urządzeń BlueRay i HD DVD.

• VP6 – kodek stworzony przez firmę On2 Technologies został zastosowany w formacie FlashVideo przez firmę Macromedia (obecnie Adobe) i jest używany w oprogramowaniu FlashPlayer od wersji 8. Niezwykłymi cechami tego kodeka, na tle konkurencji, była wysoka jakość obrazu i krótki czas oczekiwania od rozpoczęcia buforowania do rozpoczęcia odtwarzania filmu. Te zalety doprowadziły do ogólnoświatowego sukcesu oprogramowania FlashVideo, które jest obecnie powszechnie stosowane do zamieszczania filmów na stronach internetowych.

Kodeki otwarte

• Theora – wywodzi się od kodeka firmy On2 o nazwie VP3, jest to otwarty standard, całkowicie wolny od opłat i ograniczeń patentowych. Jest dostępny darmowy aplet Javy o nazwie „Cortado”, który umożliwia odtwarzanie Theory na stronie internetowej. Pod względem technologicznym Theora musi uznać wyższość kodeka On2 VP6.

• Dirac – otwarty standard, stworzony i wdrażany przez telewizję BBC. Jest rozwijany na zasadach wolnego oprogramowania. Najbardziej znanym jego zastosowaniem była transmisja Olimpiady w Pekinie. Pod względem technologicznym ten kodek należy do innej rodziny niż wszystkie dotychczas opisane. Zamiast dyskretnej transformaty cosinusowej zastosowano w nim trójwymiarową transformację falkową. Mimo iż początkowo był projektowany, aby odwzorować jakość analogowego sygnału PAL, nadaje się także do przekazywania sygnału bardzo wysokiej rozdzielczości. Jego zaletami są jakość obrazu porównywalna z H.264 – obecnym liderem rynku – i możliwości rozbudowy do wyższych wymagań w przyszłości.

Kontenery

Kontenery są często mylone z kodekami. Oznaczają po prostu format zapisu pliku. Ich główną funkcją jest umożliwienie synchronizacji obrazu, dźwięku i napisów. Dlatego wewnątrz kontenerów strumienie danych są podzielone na części, a następnie ułożone tak, że różne typy strumieni przeplatają się ze sobą.

Popularne kontenery wideo to na przykład:

• AVI – Audio Video Interleave – znany format z rozszerzeniem „.avi”, zaproponowany przez firmę Microsoft w 1992 roku i od tamtej pory cieszący się największą popularnością wśród kontenerów. Ogromna liczba kodeków jest dostosowana do przenoszenia w plikach AVI, co dodatkowo zwiększa ich popularność. Jednak format ten starzeje się i w porównaniu do nowszych rozwiązań brakuje mu możliwości przenoszenia napisów i obsługi innego kształtu pikseli niż kwadratowe.

• MPEG-PS, MPEG-TS – pliki zwykle z rozszerzeniami „.mpg” lub „.vob” (na płytach DVD). Te kontenery zostały zdefiniowane razem ze standardami MPEG i MPEG-2. Są stosowane w produktach, takich jak: DVD, HD DVD i Blue-Ray. Odtwarzacze tego formatu są dostępne na wszystkich popularnych systemach operacyjnych.

• RealMedia – pliki zwykle z rozszerzeniami „.rm” lub „.rmvb”. Pierwsze z rozszerzeń odpowiada formatowi przechowującemu strumienie o stałej przepływności, a drugie o zmiennej przepływności. Wdrożony przez firmę RealNetworks w celu przechowywania danych zakodowanych przy użyciu kodeków RealAudio i RealVideo.

• QuickTime – pliki zwykle z rozszerzeniami „.mov” lub „.mp4” (patrz rysunek 9). Format wydany przez firmę Apple jako część produktu „QuickTime Multimedia Framework“. Spośród innych formatów wyróżnia go przydatność do edycji filmów – po dokonaniu zmian w strumieniach plik może być natychmiast zapisany bez ponownego przekodowywania.

Rysunek 9: Logotyp kontenera „Quicktime” firmy Apple

• OGG – pliki zwykle z rozszerzeniami „.ogg” lub „.ogv”; otwarty standard, darmowy i wolny od ograniczeń patentowych – rozwijany przez fundację Xiph.Org do współpracy z kodekami wideo Theora, Dirac i dźwięku Vorbis, Speex. Oprócz strumieni audio i wideo kontener Ogg może także przechowywać tekst zawierający np. napisy z transkrypcją filmu.

• Matroska – pliki zwykle z rozszerzeniem „.mkv”. Podobnie jak Ogg jest to projekt rozwijany na zasadach wolnego oprogramowania. Autorzy kontenera mają na względzie rozszerzalność i możliwość dostosowania do zmieniających się wymagań w przyszłości.

• ASF – pliki zwykle z rozszerzeniem „.wmv”. Advanced Systems Format został zaprojektowany przez firmę Microsoft i wydany jako część produktu „Windows Media Framework”. Kontener ten jest stosowany w produktach Microsoftu zarówno do zapisu plików, jak i do przesyłania strumieni wideo przez sieć.

• 3GP – pliki zwykle z rozszerzeniem „.mp4” lub „.3gp”. Jest to uproszczona wersja kontenera QuickTime dostosowana do możliwości telefonów komórkowych i palmtopów. Format został przygotowany do współpracy z urządzeniami w standardzie UMTS – telefonii 3 generacji.



komentarze

Copyright © 2008-2010 EPrace oraz autorzy prac.