Kompresujemy AVI


Znacznie lepiej poradził sobie z moim filmem kodek Indeo 3.2. W krótkim czasie (około minuty) ponad 10-krotnie upakował klip wideo. Niestety, degradacja jakości w stosunku do materiału oryginalnego (przed kompresją) była zauważalna. Kodek miał kłopoty z dużymi powierzchniami, z łagodnymi przejściami tonalnymi. Dało się to zauważyć, obserwując niebo - rozpływający się błękit zamienił się w kilka "pływających" plam o kanciastych konturach.

Dużo lepiej było w przypadku Indeo 4.5. Tu wyniki okazały się zupełnie dobre. Poza drobnymi zniekształceniami ostrych krawędzi (przypominającymi zniekształcenia wnoszone przez kompresję JPEG) nie widać było "uszkodzeń" obrazu. Niestety, czas kodowania filmu był bardzo długi (18-sekundowy klip był kompresowany prawie 5 minut).

Moim faworytem był Indeo 5.11. Efekty pracy jakościowo nie odbiegały od oryginału. Poza tym algorytm kompresji okazał się bardzo wydajny - czas kodowania był najkrótszy (32 sekundy). Konkurencyjny pod względem stopnia degradacji obrazu Cinepak był kilkakrotnie wolniejszy - na wyniki trzeba było czekać ponad 5 minut. Niestety, Indeo 5 nie ma w starszych wersjach systemu operacyjnego, więc jego użycie jest dość ryzykowne. Przy produkcjach, które masz zamiar rozprowadzać (na przykład wśród uczestników konferencji), powinieneś umieścić kodek na płycie.

Stopień upakowania danych nie różnił się wiele w przypadku poszczególnych algorytmów. Było to wynikiem ograniczenia, jakie narzuciłem, zaznaczając opcję Data Transfer Rate i wybierając maksymalny przesył 300 KB/s.

Jak to działa?

Kompresja to odwracalne (w przypadku kodeków wideo tylko częściowo) kodowanie danych w celu zmniejszenia ich redundancji. Nadmiarowość odnosi się tutaj do wszystkich informacji, których przechowywanie jest zbędne lub których zapis jest powtarzany.

Kompresujemy AVI

Często kompresja jest źródłem znacznych zniekształceń konturów (1) i przejśćtonalnych (2).

Algorytmy kompresji podzielić można na bezstratne i stratne. Schematy kompresji stratnej różnią się od bezstratnych tym, że podczas ich działania część informacji jest bezpowrotnie tracona. W przypadku danych wideo powoduje to degradację jakości obrazu. Większość kodeków wideo opiera się na algorytmach kompresji stratnej - w przypadku zdjęć lub filmów wyniki ich działania są znacznie lepsze niż algorytmów kompresji bezstratnej. Poza tym niewielki ubytek informacji nie powoduje znacznego pogorszenia jakości animacji czy fotografii. Często degradacja jest niezauważalna.

Kompresujemy AVI
Nawet najprostsze schematy stratnego pakowania wideo opierają się na obserwacji działania ludzkiego zmysłu wzroku. Dla przykładu: oko jest bardziej wrażliwe na zmiany jasności niż barwy. Wniosek? Dane o zmianach koloru można zapisywać z mniejszą dokładnością niż informacje o zmianach luminancji. Inna prosta metoda to kompresja jednolitych powierzchni. W takim przypadku większe powierzchnie o zbliżonej barwie (na przykład obszar nieba) zapisywane są w skrócie, a podczas odtwarzania zastępowane powierzchnią w określonym kolorze.

Analizując zmiany obrazu na przykład w nagraniu telewizyjnych wypowiedzi, łatwo dostrzec, że w stosunkowo długich odcinkach czasu istotnym zmianom ulega tylko część klatki (usta lub ogólniej - głowa prezentera). Prawie wszystkie pozostałe elementy (tło) pozostają bez zmian. Często kompresor zapisuje w całości tylko niektóre klatki klipu (nazywane klatkami kluczowymi), później kodując tylko zachodzące zmiany. Oczywiście, im bardziej dynamiczny charakter ma utrwalony film, tym większe zmiany i tym mniejsze znaczenie ma ten rodzaj kompresji.

Intel Indeo 3.2

Popularny kodek do ogólnych zastosowań. Na platformie Video for Windows zaistniał w latach osiemdziesiątych. Kompresor Indeo 3.2 pracuje wyraźnie szybciej niż Cinepak, ale zapewnia zauważalnie gorszą jakość obrazów dynamicznych. Lepiej sprawdza się jako kodek przy zapisie ujęć o charakterze statycznym.

W przypadku filmowania poruszających się obiektów (na przykład akrobacje lotnicze) efektywna okazuje się kompresja polegająca na predykcji położenia obiektów. W skrócie jej działanie można przedstawić następująco: kompresor analizuje położenie wybranych fragmentów obrazu (na przykład obserwując zmiany ich pozycji w sąsiednich klatkach). Informacje o przesunięciu obiektu pozwalają na wyliczenie jego prawdopodobnego położenia w następnych klatkach. Dalej kodowane są jedynie informacje o różnicy między rzeczywistym położeniem obiektu (na przykład w miarę jednolitej powierzchni) a przewidzianym na podstawie analizy. Niestety, wiele technik filmowania (używanie zoomu, ruch kamery) znacznie redukuje skuteczność tej metody.

W ostatnich latach pojawiały się coraz lepsze metody upakowywania danych obrazowych. Od dawna stosuje się na przykład kompresję fraktalną. Coraz więcej jest też układów umożliwiających kodowanie z użyciem techniki wavelet, polegającej na częstotliwościowej analizie obrazu. Częstotliwości wysokie (krawędzie, kontury) są pakowane z wyższą jakością, do częstotliwości niskich (powierzchnie, łagodne przejścia tonalne) kompresor stosuje wyższy współczynnik upakowania danych i większą stratność.

Jak?

Kompresujemy AVI

Parametry wybranej kompersji.

Obsługa opcji zapisu klipu wideo z odpowiednią kompresją jest bardzo prosta. Zakładając, że korzystasz z jednego z popularnych edytorów wideo i wybrałeś na przykład opcję Create Video File, na ekranie pojawi się okno, w którym podasz nazwę pliku, który ma zostać utworzony. Dostęp do ustawień kompresji uzyskasz, klikając przycisk Options. W polu Frame rate wprowadź liczbę klatek na sekundę, w sekcji Frame size możesz wpisać rozmiar klatki w pikselach.

Radius Cinepak

Bardzo popularna kompresja obsługiwana przez Video for Windows, QuickTime. Zaprojektowana z myślą o odtwarzaniu animacji i filmów z płyt CD na komputerach o słabej wydajności. Dobrze sprawdza się tam, gdzie nie można liczyć na dużą prędkość dekompresji. Jakość kodowanych przy użyciu Cinepak filmów jest dość dobra, choć kodek niezbyt dobrze się sprawdza przy pakowaniu bardzo statycznych obrazów. Zdecydowana wada - długi czas kompresji, zaleta - dostępność nawet na starych PC.

Opcje dotyczące kompresji to na ogół Compression type (tutaj wybierzesz z rozwijanej listy jeden z dostępnych kodeków) oraz dodatkowe: key frame (częstotliwość zapisu ramek kluczowych o charakterze referencyjnym), Quality (jakość). W tym samym oknie powinna być też dostępna możliwość zdefiniowania docelowego nośnika lub maksymalnego transferu podawanego w KB/s (Maximum data rate). Możesz założyć, że czytnik CD o pojedynczej prędkości daje przesył na poziomie 150 KB/s. Jednoczesna modyfikacja parametru Quality i Maximum data rate w przypadku większości kodeków nie ma jednak większego znaczenia. Wybór napędu CD (na przykład o podwójnej szybkości - 300 KB/s) w przypadku jednoczesnego zaznaczenia maksymalnej (100 procent) jakości będzie oznaczał automatyczną zmianę stopnia stratności kompresji odpowiednio do wybranego transferu.

Kompresja jest procesem czasochłonnym. Niestety, do obróbki większych plików wideo stary, wysłużony PC z kilkunastomegabajtową pamięcią i kilkuletnim procesorem może nie wystarczyć. Jeśli Twój komputer ma sobie lepiej radzić z kodowaniem klipów wideo, zadbaj o to, żeby miał do tego najlepsze warunki. Zdefragmentuj dysk, pozamykaj wszystkie niepotrzebne aplikacje. Minimalne przyspieszenie może też dać wyłączenie opcji Preview - wiele programów do edycji wideo podczas kompresji wyświetla w oknie przetwarzany fragment nagrania.