2.2 Wspierane kodeki

2.2.1 Kodeki wideo

Zobacz tabelę statusu kodeków po kompletną, codziennie tworzoną listę.

Najważniejsze z nich to:

Jeżeli masz kodeka Win32 nie wyszczególnionego tutaj, który nie jest jeszcze wspierany, prosimy, przeczytaj HOWTO importowania kodeków i pomóż nam dodać obsługę dla niego.

2.2.1.1 DivX4/DivX5

Ta sekcja zawiera informacje o kodekach DivX4 i DivX5 z Project Mayo. Ich pierwszą dostępną wersją alfa był OpenDivX 4.0 alfa 47 oraz 48. Wsparcie dla nich zostało dołączone w MPlayerze, i jest kompilowane standardowo. Dawniej używaliśmy kodu postprocessing z tych kodeków do opcjonalnego zwiększenia jakości filmów MPEG1/2. Teraz już stosujemy własny.

Nowa generacja tych kodeków potrafi nawet dekodować filmy zrobione z użyciem niesławnych kodeków DivX! W dodatku, są one dużo szybsze, niż natywne DLLe Win32 DivX, ale wolniejsze niż libavcodec. W związku z tym, używanie ich jako kodera jest ODRADZANE. Jednak, da się nimi kodować. Jedną wadą jest to, że nie są one dostępne na licencji Open Source.

DivX4Linux pracuje w dwóch trybach:

-vc odivx
Użycie kodeka sposobem OpenDivX. W tym przypadku produkuje on we własnym buforze obrazy YV12, a MPlayer dokonuje konwersji przestrzeni kolorów przy pomocy libvo. (Szybkie, zalecane!)
-vc divx4
Użycie konwersji przestrzeni kolorów z kodeka divx4. W tym trybie można użyć również YUY2/UYVY. (POWOLNE)

Metoda -vc odivxMetoda 'odivx' jest zazwyczaj szybsza, ze względu na fakt, że przenosi ona dane obrazu do formatu YV12 (planar YUV 4:2:0), a to wymaga dużo mniejszego pasma przenoszenia na szynie. W trybie spakowanego YUV (YUY2, UYVY) stosuj metodę -vc divx4. W trybie RGB prędkości są takie same, różnią się być może tylko w odniesieniu do aktualnej głębi kolorów.

Informacja: Jeżeli twój sterownik -vo wspiera bezpośrednie renderowanie, wtedy -vc divx4 może być szybszy lub być najszybszym rozwiązaniem.

Kodek możesz pobrać z

Binarne biblioteki kodeka Divx4/5 możesz pobrać z avifile lub divx.com. Rozpakuj go, jako root uruchom ./install.sh i nie zapomnij dodać /usr/local/lib do twojego /etc/ld.so.conf i uruchom ldconfig.

Pobierz wersję CVS STARYCH bibliotek jądra OpenDivx w taki sposób (lub podobny):

  1. cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login
  2. cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore
  3. Ta biblioteka jądra jest podzielona na bibliotekę dekodującą i kodującą więc muszą być kompilowane odzielnie. Dla biblioteki dekodującej, po prostu podaj
        cd divxcore/decore/build/linux
        make
        cp libdivxdecore.so /usr/local/lib
        ln -s /usr/local/lib/libdivxdecore.so /usr/local/lib/libdivxdecore.so.0
        cp ../../src/decore.h /usr/local/include
        
  4. Niestety, dla biblioteki kodującej nie ma dostępnego Linux Makefile, a optymalizacja kodu dla MMX działa tylko w Windowsie. Nadal możesz skompilować ją, używając tego Makefile.
        cd ../../../encore/build
        mkdir linux
        cd linux
        cp path/Makefile .
        make
        cp libdivxencore.so /usr/local/lib
        ln -s /usr/local/lib/libdivxdecore.so /usr/local/lib/libdivxdecore.so.0
        cp ../../src/encore.h /usr/local/include
        

MPlayer automatycznie wykrywa, czy DivX4/DivX5 jest poprawnie zainstalowany, po prostu skompilować tak jak zwykle. Jeżeli nie został wykryty, nie zainstalowałeś go, lub skonfiguruj go poprawnie.

2.2.1.2 FFmpeg DivX/libavcodec

FFmpeg zawiera pakiet kodeków open source, które są zdolne dekodować strumienie wideo skodowane do H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1/WMV2/HuffYUV i kodeki audio WMA (Windows Media Audio). Nie dość, że niektórymi z nich możesz kodować, oferują również wyższą prędkość niż kodeki Win32 lub biblioteki DivX.com DivX4/5!

Zawiera wiele niezłych kodeków, z czego najistotniejszymi są warianty MPEG4: DivX3, DivX4, DivX5, Windows Media Video 7 (WMV1). Ponad to, jednym z bardziej interesujących jest dekoder WMA.

Jeżeli używasz wydania MPlayera (nie CVS) masz libavcodec i pakiecie, po prostu skompiluj go jak zazwyczaj. Jeżeli używasz MPlayera z CVS musisz wydobyć libavcodec z drzewa CVS FFmpeg, ponieważ wydanie FFmpeg nie działa z MPlayerem. By to zrobić, wykonaj:

  1. cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login
  2. cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg
  3. Przenieś katalog libavcodec ze źródeł FFmpeg sources do głównego katalogu drzewa CVS MPlayera. To powinno wyglądać mniej więcej tak:

        main/libavcodec

    Linki symboliczne nie są wystarczające, musisz go skopiować lub przenieść!
  4. Kompilacja. Configure powinno wykryć problemy, przed kompilacją.

Informacja: MPlayer z CVS zawiera podkatalog libavcodec, ale nie zawiera kodu libavcodec! Musisz podążać za powyższymi krokami, by uzyskać kod tej biblioteki.

Z FFmpeg i moim Matroxem G400, Mogę oglądać nawet filmy DivX w wysokiej rozdzielczości DivX bez gubienia klatek na moim K6/2 500.

2.2.1.3 Kodeki XAnim

PRZEDMOWA

Musisz wiedzieć, że binarne kodeki XAnim są pakietami częściowo objętymi prawem własności, po to, by mogły być legalnie rozprowadzane, zawierają również licencję która, zawierając inne restrykcje, zabrania użytkownikom używanie kodeków wraz z programami innymi niż XAnim. Jednak autorzy XAnim nie prowadzą już żadnych działań prawnych w sprawach związanych z kodekami.

INSTALACJA I UŻYWANIE

MPlayer potrafi używać kodeków XAnim do kodowania. Podążaj za poniższymi instrukcjami, by je włączyć:

  1. Pobierz kodeki których chcesz używać ze strony XAnim. Nie ma tam kodeka 3ivx, ale na stronie 3ivx.
  2. LUB pobierz pakiet kodeków z naszej strony z kodekami.
  3. Użyj opcji --with-xanimlibdir by podać do configure, gdzie ma ma szukać kodeków XAnim. Domyślnie, szuka ich w /usr/local/lib/xanim/mods, /usr/lib/xanim/mods i /usr/lib/xanim. Alternatywnie, możesz ustawić zmienną środowiskową XANIM_MOD_DIR na katalog z kodekami XAnim.
  4. Zmień nazwy/stwórz linki do plików, wycinając część dotyczącą architektury, tak więc nazwy plików będą wyglądały tak: vid_cvid.xa, vid_h263.xa, vid_iv50.xa.

XAnim należy do rodziny kodeków xanim, więc możliwe że będziesz chciał użyć opcji -vfm xanim by poinformować MPlayera, że ma ich używać, jeżeli jest to możliwe.

Testowane kodeki zawierają: Indeo 3.2, 4.1, 5.0, CVID, 3ivX, h263.

2.2.1.4 Wideo VIVO

MPlayer może odtwarzać wideo Vivo (1.0 i 2.0). Najbardziej odpowiednim kodekiem dla plików 1.0 jest dekoder H263 z FFmpeg, możesz użyć go opcją -vc ffh263 Dla plików 2.0 używaj DLL'i Win32 poprzez opcję -vc vivo. Jeżeli nie podasz opcji w linii komend MPlayer automatycznie wybierze najlepszy kodek.

2.2.1.5 Wideo MPEG 1/2

MPEG1 i MPEG2 są dekodowane przez wieloplatformową natywną bibliotekę libmpeg2, której kod jest dołączony do MPlayera. Odtwarzamy błędne pliki wideo MPEG 1/2 poprzez wyłapywanie Signal 11 (Segmentation fault), i szybką reinicjalizację kodeka, kontynuując dokładne z miejsca, gdzie błąd wystąpił. Ta technika odzyskiwania, nie powoduję wymiernych strat na prędkości.

2.2.1.6 MS Video1

Jest bardzo stary i bardzo zły kodek Microsoftu. W przeszłości był on dekodowany z kodekiem Win32 msvidc32.dll, teraz mamy własną implementację open source (wykonaną przez Mike'a Melansona).

2.2.1.7 Cinepak CVID

MPlayer posiada teraz swój własny opensource, wieloplatformowy dekoder Cinepak (wykonany przez Dr. Tim Ferguson), wybierany jako domyślny. Obsługuje on wyjścia YUV, więc skalowanie sprzętowe jest możliwe, jeżeli sterownik wyjścia pozwala na to.

2.2.1.8 RealVideo

MPlayer wspiera dekodowanie wszystkich wersji RealVideo:

Zalecane jest pobranie i instalacja RealPlayera8 lub RealONE, ponieważ MPlayer może używać ich bibliotek do dekodowania plików wideo RealVideo 2.0 - 4.0. Skrypt configure MPlayera powinien wykryć biblioteki RealPlayera w standardowej lokalizacji pełnej instalacji. Jeżeli tego nie zrobił, przekarz do configure, gdzie ma ich szukać opcją --with-reallibdir.

Informacja: Biblioteki RealPlayera aktualnie działają tylko z Linuksem, FreeBSD, NetBSD i Cygwinem na platformach x86, Alpha i PowerPC (Linux/Alpha i Linux/PowerPC zostały przetestowane).

2.2.1.9 XviD

XViD jest odgałęzieniem od projektu kodeka OpenDivX. Stało się to, gdy ProjectMayo przeniósł OpenDivX na zamknięto źródłowy DivX4 (teraz DivX5), i ludzie nie-ProjectMayo pracujący nad OpenDivX rozzłościli się, wtedy postał XviD. Więc oba projekty mają to samo źródło.

KORZYŚCI

WADY

INSTALOWANIE XVID Z CVS

Aktualnie XviD jest dostępny tylko z CVS. Tutaj znajduje się instrukcja pobrania i instalacji(potrzebujesz przynajmniej 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 dodać kilka opcji (przestudiuj komunikaty ./configure --help).
  6. make && make install
  7. Jeżeli określiłeś --enable-divxcompat, skopiuj plik nagłówkowy divx4.h z xvidcore/src/ do /usr/local/include/.
  8. Przekompiluj MPlayer z --with-xvidcore=/path/to/libxvidcore.a.

2.2.1.10 Sorenson

Sorenson jest rodziną kodeków rozwijaną przez Sorenson Media i licencjonowaną na Apple który rozprowadza go z ich QuickTime Playerem. Aktualnie jesteśmy w stanie zdekodować wszystkie wersje plików wideo Sorenson podanymi kodekami:

KOMPILOWANIE MPLAYERA Z WSPARCIEM DLA BIBLIOTEK QUICKTIME

INFORMACJA: aktualnie wspierane są tylko platformy 32bit Intel.

  1. pobierz MPlayera z CVS
  2. skompiluj MPlayera z:
    $ ./configure --enable-qtx-codecs
  3. pobierz pakiet DLLi QuickTime z http://www.mplayerhq.hu/MPlayer/releases/codecs/
  4. rozpakuj pakiet DLLi QuickTime do twojego katalogu z kodekami Win32 (domyślnie: /usr/lib/win32)

2.2.2 Kodeki audio

Najważniejsze kodeki audio:

2.2.2.1 Programowe dekodowanie AC3

Jest to domyślny dekoder używany do plików z dźwiękiem AC3.

Dekoder AC3 może tworzyć wyjściowego dźwięku dla 2, 4 lub 6 głośników. Skonfigurowany dla 6 głośników, dekoder ten dostarcza oddzielne wyjścia dla wszystkich kanałów AC3 do sterownika karty dźwiękowej, umożliwiając doświadczenie wrażenia pełnego "dźwięku otaczającego", bez wymagania od zewnętrznego dekodera AC3 użycia kodeka hwac3.

Użyj opcji -channels, aby wybrać ilość kanałów wyjściowych. Użyj opcji -channels 2 dla stereo downmix. Dla czterokanałowego downmix (wyjścia lewo-przód, prawo-przód, lewo-tył, prawo-tył), użyj opcji -channels 4. W tym przypadku jakikolwiek centralny kanał będzie miksowany odpowiednio do przednich kanałów. -channels 6 będzie wyprowadzało wszystkie kanały AC3 tak, jak są zakodowane - w kolejności lewy, prawy, lewy-tylny, prawy-tylny, centralny oraz LFE.

Domyślna liczba kanałów wyjściowych wynosi 2.

Aby korzystać z więcej niż dwóch kanałów wyjściowych, musisz użyć OSS, i posiadać sterownik dla karty dźwiękowej, który obsługuje odpowiednią liczbę kanałów wyjściowych przez SNDCTL_DSP_CHANNELS ioctl. Na przykład odpowiednim sterownikiem jest emu10k1 (używanego z kartami SB Live!) z lub nowszy niż z sierpnia 2001 (ALSA z CVS także powinien działać).

2.2.2.2 Sprzętowe dekodowanie AC3

Potrzebujesz karty dźwiękowej, zdolnej do obsługi AC3, z cyfrowym wyjściem (SP/DIF). Sterownik karty dźwiękowej musi obsługiwać format AFMT_AC3 (C-Media). Podłącz swój dekoder AC3 do wyjścia SP/DIF i użyj opcji -ac hwac3. Jest to eksperymantalne, ale działa z kartami C-Media, Soundblaster Live! używający sterownika ALSA (ale nie OSS) i kartami dekodującymi DXR3/Hollywood+ MPEG.

2.2.2.3 Wsparcie dla libmad

libmad jest wieloplatformową biblioteką dekodowania dźwięku MPEG. Nie obsługuje zbyt dobrze uszkodzonych plików i ma pewne problemy z przeszukiwaniem.

Aby włączyć obsługę, skompiluj z opcją configure --enable-mad.

2.2.2.4 Dźwięk VIVO

Kodek dźwięku używany do plików VIVO zależy od tego, czy jest to plik VIVO/1.0, czy VIVO/2.0. Pliki VIVO/1.0 zawierają dźwięk g.723, zaś pliki VIVO/2.0 mają Vivo Siren. Oba formaty są obsługiwane.

2.2.2.5 RealAudio

MPlayer wspiera dekodowanie prawie wszystkich wersji RealAudio:

By dowiedzieć się, jak zainstalować biblioteki RealPlayer, patrz sekcja RealVideo.

2.2.2.6 Kodeki QDesign

Strumienie audio QDesign (fourcc: QDMC, QDM2) znajdują się w plikach MOV/QT. Obie wersje tych kodeków mogą być dekodowane bibliotekami QuickTime. Po instrukcję instalacji, prosimy zobacz sekcję kodeki wideo Sorenson.

2.2.2.7 Kodeki Qualcomm

Strumienie audio Qualcomm (fourcc: Qclp) znajdują się z plikach MOV/QT. Mogą być dekodowane bibliotekami QuickTime. Po instrukcję instalacji, prosimy zobacz sekcję kodeki wideo Sorenson.

2.2.2.8 Kodek AAC

AAC (Advanced Audio Coding) jest kodekiem audio czasami znajdowanym w plikach MOV i MP4. Dekoder open source FAAD jest dostępny na AudioCoding.com. Możesz pobrać drugą generację kodeka FAAD2 na ich stronie download. Niestety FAAD2 1.1 nie kompiluje się na Linuksie, więc musisz użyć wersji z CVS. Poniżej instrukcja jak:

  1. cvs -d:pserver:anonymous@cvs.audiocoding.com:/cvsroot/faac login
  2. cvs -z3 -d:pserver:anonymous@cvs.audiocoding.com:/cvsroot/faac co faad2
  3. cd faad2/
  4. chmod +x bootstrap
  5. ./bootstrap
  6. make
  7. make install

Pakiety nie są dostępne na audiocoding.com, ale możesz je pobrać (apt-get) pakiety Debiana Christian Marillat's homepage i RPMy Mandrake'a z P.L.F.

2.2.3 HOWTO importowania kodeków Win32

2.2.3.1 Kodeki VFW

VfW (Video for Windows), jest starym Video API dla Windows. Jego kodeki mają rozszerzenia .DLL lub (rzadziej) .DRV. Jeśli MPlayer nie potrafi odtworzyć twojego AVI i wyświetla komunikat o takim typie:

    UNKNOWN video codec: HFYU (0x55594648)

To oznacza, że twój AVI jest zakodowany za pomocą kodeka, który ma fourcc HFYU fourcc (HFYU = kodek HuffYUV, DIV3 = DivX Low Motion, itd....). Teraz, gdy już to wiemy, będziemy musieli dowiedzieć się, którą bibliotekę DLL z Windows załadować, aby móc odtworzyć ten plik. W naszym przypadku system.ini tę informację w linii:

    VIDC.HFYU=huffyuv.dll

Tak więc, potrzebujesz pliku huffyuv.dll. Zauważ, że kodeki dźwięku są wyróżnione za pomocą prefiksu MSACM:

    msacm.l3acm=L3codeca.acm

To jest kodek MP3. Mając już wszystkie potrzebne informacje (fourcc, plik z kodekiem, próbka AVI), wyślij żądanie wsparcia dla twojego kodeka mailem i załaduj te pliki przez FTP:

    ftp://ftp.mplayerhq.hu/MPlayer/incoming/[nazwa_kodeka]/

Informacja: W Windows NT/2000/XP szukaj tych informacji w rejestrze. np szukaj "VIDC.HFYU". By dowiedzieć się więcej, przeczytaj poniższą metodę na stare DirectShow.

2.2.3.2 Kodeki DirectShow

DirectShow to najnowsze Video API, które jest nawet gorsze, niż jego poprzednik. Sprawy się bardziej komplikują, odkąd

Nowa metoda: Użycie Microsoft GraphEdit (szybka)

  1. Pobierz GraphEdit z któregoś DirectX SDK, z Doom9, (lub poszukaj na Google, u mnie w Windowsie 2000 nie bardzo działało) .
  2. Uruchom graphedit.exe (Spróbuj także: SysEnum.exe, przyp. tłumacza).
  3. Z menu wybierz Graph -> Insert Filters.
  4. Rozwiń listę DirectShow Filters.
  5. Wybierz odpowiedną nazwę kodeka i rozwiń listę.
  6. W polu DisplayName spójż na tekst w nawiasie po ukośniku (backslashu) i zapisz go (pięć ograniczonych kreskami bloków, GUID).
  7. Binaria kodeka są w pliku określonym w polu Filename.

Informacja: Jeżeli nie ma nic w Filename i DisplayName zawiera coś w stylu device:dmo, wtedy jest to DMO-Codec.

Stara metoda: Weź głęboki oddech i zacznij przeszukiwać rejestr...

  1. Uruchom regedit.
  2. Wciśnij Ctrl-f, odznacz pierwsze dwa pola i zaznacz trzecie. Wpisz fourcc kodeka (np. TM20).
  3. Powinieneś zobaczyć wpis zawierający ścieżkę i nazwę pliku (np. C:\WINDOWS\SYSTEM\TM20DEC.AX).
  4. Teraz, gdy masz już plik, potrzebujemy GUID. Spróbuj szukać jeszcze raz, ale tym razem szukaj nazwy kodeka, a nie fourcc. Nazwę możesz zdobyć sprawdzając File(Plik) -> Properties(Właściwości) -> Advanced(Zaawansowane), podczas odtwarzania pliku w Media Playerze. Jeżeli się nie da, to masz pecha. Spróbuj zgadnąć (np. szukaj TrueMotion).
  5. Jeśli znalazłeś (w rejestrze), powinno być tam pole FriendlyName oraz pole CLSID. Zapisz 16 bajtów CLSID, to potrzebne nam GUID.

Informacja: Jeżeli szukanie zawodzi, spróbuj zaznaczyć wszystkie pola. Możesz uzyskać nieprzydatne wyszukania, ale być może dostaniesz te właściwe przy okazji ...

Mając teraz wszystkie niezbędne informacje, (fourcc, GUID, plik kodeka, próbka AVI), wyślij zgłoszenie wsparcia dla swojego kodeka mailem, i prześlij te pliki na adres FTP:

    ftp://ftp.mplayerhq.hu/MPlayer/incoming/[nazwa kodeka]/