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 DivX ;-), OpenDivX (DivX4), DivX 5.01 (Pro), 3ivX, M$ MPEG-4 v1, v2 i dla innych rodzajów MPEG4
- 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 & 2.0 z użyciem `libavcodec` i kodeki RealVideo 3.0 & 4.0 używające bibliotek RealPlayer
- natywny dekoder HuffYUV
- Różne stare proste formaty podobne do RLE

Jeżeli posiadasz 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 pakiet kodeków o otwartych źródłach, które potrafią dekodować strumienie różnymi kodekami audio i video. Oferują one także imponujące funkcję kodowania i szybszą bibliotekę DivX4/5 niż w przypadku kodeków Win32, albo tych z DivX.com!

W skład pakietu wchodzi wiele dobrych kodeków, szczególnie tych związanych z MPEG-4: DivX3, DivX4, DivX5, Windows Media Video 7/8 (WMV1/WMV2). Zawiera również warty uwagi dekoder WMA.

Jednym z najnowszych kodeków, który warto wymienić jest kodek Sorenson 3 (SVQ3). Jest to pierwsza, całkowicie otwarta implementacja tego kodeka. Jest on nawet szybszy od oryginału. Zaleca się wybór tej wersji zamiast kodeków binarnych!

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

Zarówno wydania MPlayera, jak i wersje MPlayera z Subversion, zawierają `libavcodec`, więc nie musisz się martwić o osobne sprawdzanie `libavcodec`. Po prostu uruchom `configure` i kompiluj.

Wykorzystując FFmpega i mojego Matroksa G400, mogę oglądać na moim K6-2 500 filmy DivX najwyższej rozdzielczości bez gubienia klatek.

### 7.1.2. kodeki XAnim

### Notatka

Wiedz, że binarne kodeki Xanim wydane są na licencji, która, oprócz innych ograniczeń, zabrania użytkownikowi korzystać z nich w zestawieniu z innym programem niż XAnim. Jednakże do tej pory autor nie podejmował jeszcze żadnych kroków prawnych w sprawie związanej z kodekami.

INSTALACJA I UŻYTKOWANIE. MPlayer potrafi zaprzęgnąć do dekodowania kodeki Xanim. Aby je uaktywnić, postępuj zgodnie z instrukcją:

1. Ściągnij kodeki, których chcesz użyć ze strony XAnim. Nie ma tam kodeka 3ivX, ale można go znaleźć na stronie 3ivX.

2. ALBO ściągnij zestaw kodeków z naszej strony z kodekami

3. Użyj opcji `--with-xanimlibdir` żeby wskazać skryptowi `configure` gdzie ma szukać kodeków Xanim. Domyślnie szuka ich w katalogach `/usr/local/lib/codecs`, `/usr/local/lib/xanim/mods`, `/usr/lib/xanim/mods` i `/usr/lib/xanim`. Drugą możliwością jest ustawienie zmiennej środowiskowej `XANIM_MOD_DIR` na katalog z kodekami XAnim.

4. Zmień nazwę/utwórz dowiązanie symboliczne (symlink) plików, usuwając z nazwy rzeczy związane z architekturą komputera, tak żeby miały nazwy tego typu: `vid_cvid.xa`, `vid_h263.xa`, `vid_iv50.xa`

XAnim to cała rodzina kodeków `xanim`, możesz więc użyć opcji `-vfm xanim` żeby kazać MPlayerowi używać ich, gdy jest to możliwe.

Przetestowane kodeki to: Indeo 3.2, 4.1, 5.0, CVID, 3ivX, H.263.

### 7.1.3. VIVO video

MPlayer potrafi odtwarzać pliki video zakodowane przy pomocy Vivo (1.0 i 2.0). Najodpowiedniejszym kodekiem dla plików w wersji 1.0 jest dekoder H.263 FFmpega, którego możesz użyć za pomocą opcji `-vc ffh263`. Dla plików w wersji 2.0, użyj Win32 DLL korzystając z opcji `-vc vivo`. Jeżeli nie wybierzesz żadnej opcji, MPlayer automatycznie wybierze najlepszy kodek.

### 7.1.4. MPEG-1/2 video

MPEG-1 i MPEG-2 są dekodowane przez natywną, wieloplatformową bibliotekę `libmpeg2`, której kod źródłowy wchodzi w skład MPlayera. Z uszkodzonymi plikami MPEG-1/2 radzimy sobie przechwytując `Signal 11` (`segmentation fault -błąd segmentacji -przyp tłumacz`) i szybko reinicjując kodek, kontynuując odtwarzanie dokładnie w miejscu gdzie wystąpił błąd. Ta technika nie ma widocznego wpływu na szybkość działania.

### 7.1.5. MS Video1, Cinepak CVID i inne stare kodeki

MPlayer potrafi odtwarzać większość plików AVI i MOV w których użyto starszych kodeków. W przeszłości były one dekodowane przy pomocy binarnych kodeków Win32, ale dzisiaj dysponujemy już natywnymi kodekami. W przypadku większości z nich używany jest `libavcodec`.

### 7.1.6. RealVideo

MPlayer obsługuje dekodowanie wszystkich wersji RealVideo:

- RealVideo 1.0, 2.0 (fourcc RV10, RV20) - kodowanie/dekodowanie realizowane przez `libavcodec`
- RealVideo 3.0, 4.0 (fourcc RV30, RV40) - dekodowanie za pomocą bibliotek RealPlayer

Ściągnij kodeki Real z http://www.mplayerhq.hu/MPlayer/releases/codecs/ i rozpakuj je do katalogu `/usr/local/lib/codecs`. Jeżeli wolisz je trzymać w innym miejscu, użyj opcji `--with-reallibdir` dla configure.

### Notatka

Aktualnie biblioteki RealPlayer działają tylko pod Linuksem, FreeBSD, NetBSD, Cygwinem na platformach x86, Alpha i PowerPC (Sprawdzone zostały Linux/Alpha i Linux/PowerPC) i pod Mac OS X.

### 7.1.7. 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 (a teraz DivX5). 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.

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 poniższej komendy). ./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-xvidcore=`/ścieżka/do/`libxvidcore.a` `--with-xvidincdir=`/ścieżka/do/`xvid.h`.

### 7.1.8. Sorenson

Sorenson jest kodekiem video rozwijanym przez Sorenson Media i licencjonowanym dla Apple, która rozprowadza go wraz ze swoim Odtwarzaczem QuickTime. Aktualnie MPlayer jest w stanie odtwarzać wszystkie wersje plików video Sorensona z użyciem następujących dekoderów:

- Sorenson Video v1 (fourcc SVQ1) - dekodowanie za pomocą natywnego kodeka video (`libavcodec`)
- Sorenson Video v3 (fourcc SVQ3) - dekodowanie za pomocą natywnego kodeka video (`libavcodec`)

KOMPILOWANIE MPLAYERA ZE WSPARCIEM DLA BIBLIOTEK QUICKTIME

### Notatka

Aktualnie obsługiwane są tylko 32-bitowe platformy Intela.

1. ściągnij MPlayera z SVN

2. pobierz pakiet QuickTime DLL z http://www.mplayerhq.hu/MPlayer/releases/codecs/

3. rozpakuj pakiet QuickTime DLL do twojego katalogu z kodekami Win32 (domyślnie: `/usr/local/lib/codecs/`)

4. skompiluj MPlayera

### 7.1.9. x264

#### 7.1.9.1. Co to jest x264

`x264` jest biblioteką słurzą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 ma implementacji 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, pojedyncze albo wieloprzebiegowe ABR

- Wykrywanie zmian scen

- Adaptatywne umieszczanie klatek B

- Referencyjne ramki / dowolna kolejność ramek

- adaptywna transformacja przestrzenna 8x8 i 4x4

- tryb bezstratny

- Własne matryce kwantyzacji

- Równoległe kodowanie wielu fragmentów

#### 7.1.9.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ż około 2.0 GHz.

Przynajmniej przy używaniu `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.9.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.9.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