7.1. Kodeki video
Poprzedni | Rozdział 7. Obsługiwane kodeki | Następny

## 7.1. Kodeki video

Zajrzyj do tabeli stanu kodeków, żeby zobaczyć kompletną, codziennie generowaną listę. Niektóre kodeki są dostępne do pobrania z naszej strony domowej. Ściągniesz je ze strony z kodekami.

Najważniejsze ze wszystkich:

- MPEG-1 (VCD) i MPEG-2 (DVD) video

- natywne dekodery dla wszystkich wariantów DivX, 3ivX, M$ MPEG-4 v1, v2 i innych rodzajów MPEG-4

- natywne dekodery dla Windows Media Video 7/8 (WMV1/WMV2) i dekodery Win32 DLL dla Windows Media Video 9 (WMV3). Oba używane w plikach `.wmv`

- natywny dekoder Sorenson 1 (SVQ1)

- natywny dekoder Sorenson 3 (SVQ3)

- dekoder 3ivX w wersji 1 i 2

- Kodeki Cinepak i Intel Indeo (3.1,3.2,4.1,5.0)

- MJPEG, AVID, VCR2, ASV2 i inne formaty sprzętowe

- VIVO 1.0, 2.0, I263 i inne warianty H.263(+)

- FLI/FLC

- RealVideo 1.0 i 2.0 przy użyciu `libavcodec` i kodeki RealVideo 3.0 i 4.0 używające bibliotek RealPlayer

- natywny dekoder HuffYUV

- Różne stare proste formaty podobne do RLE

Jeżeli masz niewymienione tutaj kodeki Win32, które nie są jeszcze obsługiwane, zajrzyj do działu importowanie kodeków Win32-HOWTO i pomóż nam dodać ich obsługę.

### 7.1.1. FFmpeg/libavcodec

FFmpeg zawiera `libavcodec`, wiodącą bibliotekę kodeków audio i video mającą otwarte źródła. Może ona dekodować większość formatów multimedialnych, zazwyczaj z większą prędkością niż alternatywy, a docelowo chce obsługiwać je wszystkie. Jest to domyślny dekoder dla większości kodeków obsługiwanych przez MPlayera. Kodowanie do niektórych formatów również jest możliwe i obsługiwane przez MEncodera.

Pełną listę obsługiwanych kodeków video i audio znajdziesz na stronie FFmpeg.

MPlayer zawiera `libavcodec`. Po prostu uruchom `./configure` i kompiluj.

### 7.1.2. Xvid

Xvid jest wolnym, kompatybilnym z MPEG-4 ASP, kodekiem video z możliwościami kodowania dwuprzebiegowego i pełną obsługą MPEG-4 ASP, dlatego jest dużo bardziej efektywny niż dobrze znany kodek DivX. Łączy bardzo dobrą jakość video i dobre osiągi dzięki optymalizacjami kodu dla większości nowoczesnych procesorów.

Zaczął się jako odłam kodeka OpenDivX. Stało się to gdy ProjectMajo zmienił OpenDivX na zamknięte DivX4. W rezultacie tej decyzji rozeźleni ludzie spoza ProjectMayo, którzy pracowali nad OpenDivX, rozpoczęli projekt Xvid. Tak więc oba projekty mają to samo pochodzenie.

Zauważ, że Xvid nie jest konieczny do odtwarzania video zakodowanego przy pomocy Xvid. Domyślnie używana jest biblioteka `libavcodec`, bo jest szybsza.

Instalacja `Xvid`

Jak większość otwartego oporgramowania dostępny jest w dwóch wersjach: oficjalnych wydań i wersji CVS. Wersja CVS jest zazwyczaj wystarczająco stablina by jej używać, jako że zazwyczaj ma poprawki do błędów występujących w wydaniach. Tak należy nakłonić `Xvid` CVS do pracy z MEncoderem (będziesz potrzebował przenajmniej autoconf 2.50, automake i libtool):

1.     cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login

2.     cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore

3.     cd xvidcore/build/generic

4.     ./bootstrap.sh

5.     ./configure

   Możesz potrzebować dodać jakieś opcje (przejrzyj wyjście polecenia ./configure --help)

6.     make && make install

7. Jeżeli użyłeś opcji `--enable-divxcompat`, skopiuj `../../src/divx4.h` do `/usr/local/include/`.

8. Przekompiluj MPlayera z opcjami `--with-xvidlibdir=`/ścieżka/do/`libxvidcore.a` `--with-xvidincdir=`/ścieżka/do/`xvid.h`.

### 7.1.3. `x264`

#### 7.1.3.1. Co to jest `x264`?

`x264` jest biblioteką służącą do tworzenia strumieni video H.264. Nie jest w 100% ukończona, ale ma przynajmniej pewną obsługę większości mających wpływ na jakość możliwości H.264. Jest też wiele zaawansowanych możliwości w specyfikacji H.264, które nie mają nic wspólnego z jakością jako taką; wiele z nich jeszcze nie jest zaimplementowanych w `x264`.

Możliwości kodera

- CAVLC/CABAC

- Wielokrotne referencje

- Intra: wszystkie typy makrobloków (16x16, 8x8 i 4x4 z wszystkimi predykcjami)

- Inter P: wszystkie podziały (od 16x16 aż do 4x4)

- Inter B: podziały od 16x16 do 8x8 (włączając SKIP/DIRECT)

- Kontrola tempa: stały kwantyzator, stały bitrate, jedno- albo wieloprzebiegowe ABR, opcjonalne VBV

- Wykrywanie zmian scen

- Adaptatywne umieszczanie klatek B

- Referencyjne klatki B / dowolna kolejność ramek

- adaptywna transformacja przestrzenna 8x8 i 4x4

- tryb bezstratny

- Własne matryce kwantyzacji

- Równoległe kodowanie wielu fragmentów

- Przeplot

#### 7.1.3.2. Co to jest H.264

H.264 jedną z nazw nowego kodeka video opracowanego wspólnie przez ITU i MPEG. Może też być prawidłowo nazywany okropnymi nazwami "ISO/IEC 14496-10" lub "MPEG-4 Part 10". Częściej jest nazywany "MPEG-4 AVC" albo po prostu "AVC".

Jakkolwiek go nie nazywać, H.264 może być wart wypróbowania ponieważ zazwyczaj może dorównać jakością MPEG-4 ASP z mniejszą o 5%-30% objętością. Dokładne wyniki zależą od materiału źródłowego i kodera. Zyski z używania H.264 nie są za darmo: Dekodowanie strumieni H.264 mają duże wymagania obliczeniowe i pamięciowe. Na przykład, na Athlonie 1733 MHz, film H.264 w rozdzielczości DVD 1500kbps wymaga do zdekodowania około 35% CPU. Dla porównania, dekodowanie strumienia MPEG-4 ASP w rozdzielczości DVD 1500kbps wymaga około 10% CPU. Oznacza to że dekodowanie wysokiej jakości strumieni jest prawie nie do pomyślenia dla zwykłych użytkowników. Oznacza to również że dobry DVD rip może się czasami zacinać na procesorach wolniejszych niż jakieś 2.0 GHz.

Jeśli używasz `x264`, wymagania kodowania nie są o wiele większe niż te, do których przywykliśmy przy MPEG-4 ASP. Na przykład, na Athlonie 1733 MHz typowe kodowanie DVD będzie działać z 5-15fps.

Ten dokument nie ma wyjaśniać szczegółów H.264, ale jeśli jesteś zainteresowany niewielkim wstępem możesz chcieć przeczytać The H.264/AVC Advanced Video Coding Standard: Overview and Introduction to the Fidelity Range Extensions.

#### 7.1.3.3. Jak mogę odtwarzać filmy H.264 używając MPlayera

MPlayer używa dekodera H.264 z `libavcodec`. `libavcodec` miało choć trochę zdatny do użytku dekoder H.264 od około czerwca 2004, ale od tego czasu wprowadzono wiele zmian i poprawek, zarówno pod względem obsługiwanej funkcjonalności jak i zużycia CPU. Na wszelki wypadek lepiej jest używać najnowszej wersji z Subversion.

Jeśli chcesz szybki i łatwy sposób na sprawdzenie czy były ostatnio zmiany w obsłudze H.264 w `libavcodec`, możesz patrzeć na interfejs sieciowy repozytorium SVN FFmpega

#### 7.1.3.4. Jak mogę kodować filmy używając MEncodera i `x264`?

Jeśli masz zainstalowanego klienta subversion, możesz uzyskać najnowsze źródła x264 tym poleceniem:

    svn co svn://svn.videolan.org/x264/trunk x264

Źródła MPlayera są aktualizowane, gdy tylko zmieni się API `x264`, więc zalecane jest także używanie MPlayera z Subversion. Być może sytuacja się zmieni jeśli i gdy nastąpi "wydanie" `x264`. W międzyczasie `x264` powinna być uważana za niestabilną, w tym sensie że jej interface programistyczny może się zmienić.

`x264` buduje się i instaluje w sposób standardowy:

    ./configure && make && sudo make install

To zainstaluje libx264.a w /usr/local/lib oraz x264.h w /usr/local/include. Gdy biblioteka i nagłówki `x264` są już w standardowych miejscach, budowanie MPlayera z obsługą `x264` jest proste. Uruchom standardowe:

    ./configure && make && sudo make install

Skrypt konfiguracyjny wykryje że spełniłeś wymagania do obsługi `x264`.

Poprzedni | Początek rozdziału | Następny
Rozdział 7. Obsługiwane kodeki | Spis treści | 7.2. Kodeki audio