Zobacz: http://www.mplayerhq.hu/DOCS/codecs-status.html. Znajdziesz tam kompletną, codziennie tworzoną listę!!!
Najważniejsze kodeki video:
Jeśli masz kodeka Win32 nie wymienionego tutaj, oraz jeszcze nie obsługiwanego, przeczytaj importowanie kodeków, by uzyskać informacje o tym, jak pomóc nam w dodaniu wsparcia dla niego!
Ta sekcja zawiera informacje o kodekach DivX4 z ProjectMayo. 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! Ale to jeszcze nie wszystko! Są one DUŻO szybsze, niż tradycyjne DLLe Win32 DivX (zauważ, że dekoder libavcodec jest JESZCZE SZYBSZY :). Zobacz poniżej opis konfiguracji. Jedyną wadą tych kodeków jest fakt, że aktualnie są one closed-source. :(
Kodek można ściągnąć z następującego URL:
http://avifile.sourceforge.net
Jeśli to nie zadziała, spróbuj jeszcze:
Rozpakuj je i uruchom, jako root, polecenie: ./install.sh
.
Uwaga: NIE zapomnij dodać /usr/local/lib
do /etc/ld.so.conf
i uruchomić ldconfig
!
MPlayer automatycznie wykrywa czy DivX4 jest (właściwie) zainstalowany, wystarczy go, tak jak zawsze, skompilować. Jeśli mplayer nie wykrywa DivX4, oznacza to, że nie zainstalowałeś go w taki sposób jak powyżej podano, i/lub popsułeś konfigurację (zobacz ostatnie pytanie w sekcji 5.1).
Używanie tego kodeka jest trochę skomplikowane. Ponieważ powstaje konflikt ze starym OpenDivX (jego API jest bardzo podobne do do tego z OpenDivX), kod OpenDivX jest wyłączony, również sterownik OpenDivX wywołuje tą bibliotekę.
Ogólnie możemy sprowadzić to zagadnienie do faktu, że masz dwie opcje do zastosowania tego kodeka:
-vc odivx | użycie kodeka divx4 jako nowej wersji OpenDivX. W tym przypadku produkuje on we własnym buforze obrazy YV12 oraz MPlayer (libvo) dokonuje konwersji przestrzeni kolorów. (REKOMENDOWANE!) | ||
-vc divx4 | użycie konwersji przestrzeni kolorów z kodeka divx4. W tym trybie można użyć również YUY2/UYVY. |
Metoda '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ę 'divx4'. W trybie RGB możesz dowolnie wybierać, ponieważ prędkości ich są takie same, różnią się być może tylko w odniesieniu do aktualnego bpp.
Uwaga: ten kodek wspiera również postprocessing (użyj opcji
-oldpp
, aby to włączyć), ale zakres wartości jest dziwny:
0 | bez postproc | ||
10 .. 20 | postprocessing, normalny (jak na poziomie 2 z divxd) | ||
30 .. 60 | mocny prostprocessing, obciąża mocno CPU (podobnie jak poziom 4 z divxd | ||
2.2.1.2. DivX/libavcodec z ffmpeg
Poczynając od wersji 0.4.2, ffmpeg zawiera kodek DivX
opensource, który jest kompatybilny z tradycyjnym DivX. MPlayer
wspiera ten kodek i dzięki temu możliwe staje się oglądanie filmów
DivX/DivX4 na platformach innych niż x86 oraz osiąganie dużo szybszej
prędkości dekodowania DivX/DivX4, niż za pomocą kodeków Win32 i
oryginalnych bibliotek DivX4
. Ponieważ zostało to usunięte z drzewa cvs
MPlayera, musisz ściągnąć to ręcznie bezpośrednio z drzewa cvs
FFmpeg
cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login
cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg
UWAGA: Jeśli kopiujesz z podkatalogami CVS, następnym razem wystarczy zrobić 'cvs update'.
Teraz przenieś nowo ściągnięte źródła ffmpeg: katalog libavcodec, (ze wszystkimi jego podkatalogami) do drzewa katalogowego MPlayera, tak, aby to wyglądało w taki sposób:
main/libavcodec
Linkowanie symboliczne NIE jest wystarczające. Musisz to skopiować bądź przenieść!!!
Następnie skompiluj. configure wykrywa czy wszystko jest w porządku i może być skompilowane. Ten kodek również wspiera postprocessing!
W celu użycia go, uaktualnij swój plik codecs.conf, zgodnie z tym, co mówią strony podręcznika lub example.conf (opcja -vfm).
Aby osiągnąć największą prędkość na moim K6, usuwam sekcję
ffmpeg12
z codecs.conf (ten kodek nie jest zoptymalizowany a
libmpeg2 jest dwa razy szybszy), i wpisuję vfm=5
w moim pliku
konfiguracyjnym. Po czym MPlayer zawsze już używa ffdivx/ffodivx
do dekodowania plików DivX/DivX4 oraz libmpeg2 do plików MPEG1/2. Przy
takiej konfiguracji na moim K6/2 500 z Matrox G400 mogę oglądać filmy
DivX/DivX4 w najwyższej rozdzielczości, bez straty klatek (framedrop).
Używanie (niektórych) kodeków XAnim z innym programem niż XAnim, jest NIELEGALNE. TWOIM obowiązkiem jest przeczytanie licencji i zastosowanie się do niej. Autorzy MPlayera nie mogą zostać pociągnięci do odpowiedzialności za jakiekolwiek, sprzeczne z prawem, zachowania użytkowników.
A więc: tak, MPlayer potrafi używać do dekodowania kodeków XAnim. Włączenie ich jest bardzo proste:
--with-xanimlibdir
, aby podać dla configure,
gdzie znajdują się kodeki xanim. Domyślnie są one szukane w katalogu
/
(...).
Alternatywą jest ustawienie w zmiennej środowiskowej XANIM_MOD_DIR
ścieżki do katalogu z kodekami XAnim.vid_cvid.xa, vid_h263.xa, vid_iv50.xa
Jest to rodzina kodeków video o numerze 10, przydatne więc będzie użycie
opcji -vfm 10
i poinformowanie MPlayera, by ich użył jeśli
to możliwe.
Testowane kodeki: Indeo 3.2, 4.1, 5.0, CVID, 3ivX, h263.
MPlayer potrafi odgrywać obrazy Vivo (1.0 i 2.0). Najbardziej
odpowiedni kodek do plików 1.0, to dekoder FFmpeg's H263, Możesz go użyć za
pomocą opcji -vc ffh263
(domyślnie) (będziesz potrzebował
najnowszego libavcodec!). Do plików 2.0 użyj ivvideo.dll
pliku DLL
Win32 (do sciągnięcia tutaj),
zainstaluj go w /usr/lib/win32
, bądź w innym miejscu, w którym
przechowujesz kodeki Win32. Ten późniejszy kodek nie obsługuje trybów YV12 ani
YUY2, a tylko BGR i jest użyteczny wyłącznie z wyjściami X11 i OpenGL. Miejmy
nadzieję, że ffh263 będzie wspierał pliki VIVO 2.0 w przyszłości.
MPEG1 i MPEG2 są dekodowane za pomocą biblioteki własnej libmpeg2. Jej kod źródłowy jest zawarty w MPlayerze i oczywiście jest wieloplatformowy. Obsługujemy pliki video MPEG1/2 z błędami przez sprawdzanie, jaką sygnaturę zwraca libmpeg2, i kiedy jest to sig11 (segmentation fault), szybko inicjalizujemy ponownie kodek, i kontynuujemy dokładnie z tego miejsca, w którym pojawił się błąd. Nie ma tu zauważalnej straty prędkości.
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).
MPlayer posiada teraz swój własny opensource, wieloplatformowy dekoder Cinepak. Obsługuje on wyjścia YUV, wykonuje skalowanie sprzętowe, jeśli sterowniki wyjścia video na to pozwalają. Jest używany domyślnie.
Aktualnie obsługiwany jest TYLKO kodek RealVideo 1.0 (fourcc RV10), poprzez ffmpeg. To smutne, ale żadne nowe pliki RealMedia nie są z nim dostarczone, tylko nowe kodeki RV20 i RV30, które są closed-source. Mało prawdopodbne jest wsparcie dla nich w przyszłości :(
Najważniejsze kodeki dźwięku, to:
2.2.2.1. Programowe dekodowanie AC3
Domyślny dekoder, używany do plików z dźwiękiem AC3.
Dekoder AC3 może tworzyć mieszanki 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. Ostatecznie, "-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 wersja sterownika emu10k1 (używanego z kartami SB Live), nowsza niż z sierpnia 2001, powinna być odpowiednia (słyszałem, że najnowszy ALSA CVS obsługuje to także) .
Miksowanie na wyjściu więcej niż dwóch kanałów powinno być traktowane jako eksperymentalne.
2.2.2.2. Sprzętowe dekodowanie AC3
Potrzebna ci będzie karta dźwiękowa, zdolna do obsługi AC3, z cyfrowym wyjściem (SP/DIF). Sterownik karty dźwiękowej musi obsługiwać format AFMT_AC3 (tak, jak to robi SB Live, albo C-Media!). Połącz swój dekoder AC3 do wyjścia SP/DIF oraz użyj opcji '-ac hwac3'. To może zadziałać, bądź nie (status eksperymentalny - najprawdopodobniej aktualnie będzie działać tylko z kartami C-Media, masz wolną rękę w naprawieniu tego dla SB Live).
libmad jest wieloplatformową biblioteką dekodowania dźwięku MPEG. Jeśli nie wiesz dlaczego to jest dobre, prawdopodobnie nie potrzebujesz tego.
Aby włączyć obsługę, skompiluj źródła z opcją --enable-mad
.
Kodek dźwięku stosowany 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.
Możesz ściągnąć kodek g.723/Siren Win32 DLL z
tej
strony, a następnie skopiować go do katalogu /usr/lib/win32
lub innego odpowiedniego.
Aktualnie jedynym obsługiwanym kodekiem jest DNET. Właściwie jest to wersja low-bitrate dobrze znanego kodeka AC3. Może on się pojawić zarówno w starszych jak i w nowych filmach RealMedia
2.2.3. Importowanie kodeków Win32
VfW (Video for Windows), jest to stare Video API dla Windows. Jego kodeki mają rozszerzenia .DLL lub (rzadziej) .DRV. Jeśli MPlayer nie działa z twoim AVI:
UNKNOWN video codec: HFYU (0x55594648)
To oznacza, że twój AVI jest zakodowany za pomocą kodeka, który ma 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 zawiera to (oraz wiele innych):
VIDC.HFYU=huffyuv.dll
Tak więc będziemy potrzebować 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]/
DirectShow to najnowsze Video API, które jest nawet gorsze, niż jego poprzednik. Sprawy się bardziej komplikują, odkąd:
Więc znajdźmy ten przeklęty rejestr ...
UWAGA:Poszukując plików, staraj się włączyć wszystkie pola wyboru ... Możesz dostać wiele nieprzydatnych odpowiedzi, ale być może dostaniesz te właściwe przy okazji ...
UWAGA: W razie niepowodzenia zrzuć wszystko na M$.
Mając już wszystkie potrzebne informacje (fourcc, GUID, plik z kodekiem,
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]/