Mercurial > mplayer.hg
view DOCS/Polish/codecs.html @ 5250:e26352c3fa9b
support multiple video header extension chunks
author | arpi |
---|---|
date | Thu, 21 Mar 2002 20:18:30 +0000 |
parents | ad9d0116616a |
children | d5c692754cf2 |
line wrap: on
line source
<HTML> <meta http-equiv="content-type" content="text/html; charset=iso-8859-2"> <BODY BGCOLOR=WHITE> <FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> <P><B><A NAME=2.2>2.2. Wspierane kodeki</A></B></P> <P><B><A NAME=2.2.1>2.2.1. Kodeki Video</A></B></P> <P>Zobacz: <A HREF="http://www.mplayerhq.hu/DOCS/codecs-status.html"> http://www.mplayerhq.hu/DOCS/codecs-status.html</A>. Znajdziesz tam kompletną, codziennie tworzoną listę!!!</P> <P>Najważniejsze kodeki video:<BR> <UL> <LI>MPEG1 (VCD) i MPEG2 (DVD) video</LI> <LI>DivX ;-), OpenDivX (DivX4), 3ivx i inne warianty MPEG4</LI> <LI>Windows Media Video 7 (WMV1) i 8 (WMV2) wykorzystywany w plikach .wmv</LI> <LI>Kodeki Intel Indeo (3.1,3.2,4.1,5.0)</LI> <LI>MJPEG, ASV2 i inne formaty sprzętowe</LI> <LI>Kodeki XAnim</LI> <LI>VIVO</LI> <LI>FLI</LI> <LI>RealVideo 1.0</LI> </UL></P> <P>Jeśli masz kodeka Win32 nie wymienionego tutaj, oraz jeszcze nie obsługiwanego, przeczytaj <A HREF="#2.2.3">importowanie kodeków</A>, by uzyskać informacje o tym, jak pomóc nam w dodaniu wsparcia dla niego!</P> <P><B><A NAME=2.2.1.1>2.2.1.1. DivX4</A></B></P> <P>Ta sekcja zawiera informacje o kodekach DivX4 z <A HREF="http://www.projectmayo.com">ProjectMayo</A>. Ich pierwszą dostępną wersją alfa był OpenDivX 4.0 alfa 47 oraz 48. Wsparcie dla nich zostało dołączone w <B>MPlayerze</B>, 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.</P> <P>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. :(</P> <P>Kodek można ściągnąć z następującego URL:</P> <P> <A HREF="http://avifile.sourceforge.net">http://avifile.sourceforge.net</A></P> <P>Jeśli to nie zadziała, spróbuj jeszcze:</P> <P> <A HREF="http://divx.com">http://divx.com</A></P> <P>Rozpakuj je i uruchom, jako root, polecenie: <CODE>./install.sh</CODE> .</P> <P>Uwaga: NIE zapomnij dodać <CODE>/usr/local/lib</CODE> do <CODE>/etc/ld.so.conf</CODE> i uruchomić <CODE>ldconfig</CODE>!</P> <P><B>MPlayer</B> 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).</P> <P>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ę.</P> <P>Ogólnie możemy sprowadzić to zagadnienie do faktu, że masz dwie opcje do zastosowania tego kodeka:</P> <P><TABLE BORDER=0> <TD> </TD><TD VALIGN=top><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>-vc odivx</TD><TD> </TD> <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>użycie kodeka divx4 jako nowej wersji OpenDivX. W tym przypadku produkuje on we własnym buforze obrazy YV12 oraz <B>MPlayer</B> (libvo) dokonuje konwersji przestrzeni kolorów. (<B>REKOMENDOWANE!</B>)</TD><TR> <TD></TD><TD VALIGN=top><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>-vc divx4</TD><TD></TD> <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>użycie konwersji przestrzeni kolorów z kodeka divx4. W tym trybie można użyć również YUY2/UYVY.</TD></TR> </TABLE></P> <P>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.</P> <P>Uwaga: ten kodek wspiera również postprocessing (użyj opcji <CODE>-oldpp</CODE>, aby to włączyć), ale zakres wartości jest dziwny: </P> <P><TABLE BORDER=0> <TD> </TD><TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>0</TD><TD> </TD> <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>bez postproc</TD><TR> <TD></TD><TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>10 .. 20</TD> <TD></TD><TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>postprocessing, normalny (jak na poziomie 2 z divxd)</TD><TR> <TD></TD><TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>30 .. 60</TD> <TD></TD><TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>mocny prostprocessing, obciąża mocno CPU (podobnie jak poziom 4 z divxd</TD><TR> </TABLE></P> <P><B><A NAME=2.2.1.2>2.2.1.2. DivX/libavcodec z ffmpeg</A></B></P> <P>Poczynając od wersji 0.4.2, <A HREF="http://ffmpeg.sourceforge.net">ffmpeg</A> zawiera kodek DivX <B>opensource</B>, który jest kompatybilny z tradycyjnym DivX. <B>MPlayer</B> wspiera ten kodek i dzięki temu możliwe staje się <B>oglądanie filmów DivX/DivX4 na platformach innych niż x86</B> oraz osiąganie dużo szybszej prędkości dekodowania <B>DivX/DivX4</B>, niż za pomocą kodeków Win32 i oryginalnych bibliotek DivX4<BR>. Ponieważ zostało to usunięte z drzewa cvs <B>MPlayera</B>, musisz ściągnąć to ręcznie bezpośrednio z drzewa cvs <B>FFmpeg</B></P>. <P><CODE> cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login<BR> cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg </CODE></P> <P>UWAGA: <I>Jeśli kopiujesz z podkatalogami CVS, następnym razem wystarczy zrobić 'cvs update'.</I></P> <P>Teraz przenieś nowo ściągnięte źródła ffmpeg: katalog <B>libavcodec</B>, (ze wszystkimi jego podkatalogami) do drzewa katalogowego <B>MPlayera</B>, tak, aby to wyglądało w taki sposób:</P> <P> <CODE>main/libavcodec</CODE></P> <P>Linkowanie symboliczne NIE jest wystarczające. Musisz to skopiować bądź przenieść!!!</P> <P>Następnie skompiluj. configure wykrywa czy wszystko jest w porządku i może być skompilowane. Ten kodek również <B>wspiera postprocessing!</B></P> <P>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).</P> <P>Aby osiągnąć <B>największą prędkość</B> na moim K6, usuwam sekcję <CODE>ffmpeg12</CODE> z codecs.conf (ten kodek nie jest zoptymalizowany a libmpeg2 jest dwa razy szybszy), i wpisuję <CODE>vfm=5</CODE> w moim pliku konfiguracyjnym. Po czym <B>MPlayer</B> zawsze już używa <B>ffdivx/ffodivx</B> do dekodowania plików <B>DivX/DivX4</B> 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).</P> <P><B><A NAME=2.2.1.3>2.2.1.3. Kodeki XAnim</A></B></P> <P>Używanie (niektórych) kodeków XAnim z innym programem niż XAnim, jest <B><I>NIELEGALNE</I></B>. <B>TWOIM</B> obowiązkiem jest przeczytanie licencji i zastosowanie się do niej. Autorzy <B>MPlayera</B> nie mogą zostać pociągnięci do odpowiedzialności za jakiekolwiek, sprzeczne z prawem, zachowania użytkowników.</P> <P>A więc: tak, <B>MPlayer</B> potrafi używać do dekodowania kodeków XAnim. Włączenie ich jest bardzo proste:</P> <P> <UL> <LI>Ściągnij kodeki, których chcesz używać ze <A HREF="http://xanim.va.pubnix.com">strony XAnim</A>. Nie ma tam kodeka <B>3ivx</B> , więc ściągnij go ze <A HREF="http://www.3ivx.com">strony 3ivx</A>.</LI> <LI>Użyj opcji <CODE>--with-xanimlibdir</CODE>, aby podać dla configure, gdzie znajdują się kodeki xanim. Domyślnie są one szukane w katalogu <CODE>/</CODE> (...). Alternatywą jest ustawienie w zmiennej środowiskowej <I>XANIM_MOD_DIR</I> ścieżki do katalogu z kodekami XAnim.</LI> <LI>Zmień nazwy plików, obcinając część dotyczącą architektury tak, aby wyglądały one następująco: <CODE>vid_cvid.xa, vid_h263.xa, vid_iv50.xa</CODE> </UL> </P> <P>Jest to rodzina kodeków video o numerze 10, przydatne więc będzie użycie opcji <CODE>-vfm 10</CODE> i poinformowanie <B>MPlayera</B>, by ich użył jeśli to możliwe.</P> <P>Testowane kodeki: <B>Indeo 3.2</B>, <B>4.1</B>, <B>5.0</B>, <B>CVID</B>, <B>3ivX</B>, <B>h263</B>.</P> <P><B><A NAME=2.2.1.4>2.2.1.4. Obraz VIVO</A></B></P> <P><B>MPlayer</B> 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 <CODE>-vc ffh263</CODE> (domyślnie) (będziesz potrzebował najnowszego libavcodec!). Do plików 2.0 użyj <CODE>ivvideo.dll</CODE> pliku DLL Win32 (do sciągnięcia <A HREF="http://www.mplayerhq.hu/MPlayer/samples/drivers32/ivvideo.dll">tutaj</A>), zainstaluj go w <CODE>/usr/lib/win32</CODE>, 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.</P> <P><B><A NAME=2.2.1.5>2.2.1.5. Obraz MPEG 1/2</A></B></P> <P>MPEG1 i MPEG2 są dekodowane za pomocą biblioteki własnej <B>libmpeg2</B>. Jej kod źródłowy jest zawarty w <B>MPlayerze</B> 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.</P> <P><B><A NAME=2.2.1.6>2.2.1.6. MS Video1</A></B></P> <P>Jest bardzo stary i bardzo zły kodek Microsoftu. W przeszłości był on dekodowany z kodekiem Win32 <CODE>msvidc32.dll</CODE>, teraz mamy własną implementację open-source wykonaną przez <A HREF="mailto:melanson@pcisys.net">Mike'a Melansona</A>).</P> <P><B><A NAME=2.2.1.7>2.2.1.7. Cinepak CVID</A></B></P> <P><B>MPlayer</B> 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.</P> <P><B><A NAME=2.2.1.8>2.2.1.8. RealVideo</A></B></P> <P> 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 :(</P> <P><B><A NAME=2.2.2>2.2.2. Kodeki dźwięku</A></B></P> <P>Najważniejsze kodeki dźwięku, to:<BR> <UL> <LI>MPEG layer 2 oraz layer 3 (MP3) audio(<B>własny</B> kod, z optymalizacją MMX/SSE/3DNow!)</LI> <LI>MPEG layer 1 audio(<B>własny</B> kod, z libavcodec)</LI> <LI>AC3 Dolby audio (<B>własny</B> kod, z optymalizacją SSE/3DNow!)</LI> <LI>Ogg Vorbis kodek audio (<B>własna</B> biblioteka)</LI> <LI>Voxware audio (użycie DirectShow DLL)</LI> <LI>alaw, msgsm, pcm i inne proste stare formaty dźwiękowe</LI> <LI>VIVO audio (g723, Vivo Siren)</LI> <LI>RealAudio: DNET (niska bitrate AC3)</LI> </UL></P> <P><B><A NAME=2.2.2.1>2.2.2.1. Programowe dekodowanie AC3</A></B></P> <P>Domyślny dekoder, używany do plików z dźwiękiem AC3.</P> <P>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.</P> <P>Użyj opcji <CODE>-channels</CODE>, aby wybrać ilość kanałów wyjściowych. Użyj opcji <CODE>-channels 2</CODE> dla stereo downmix. Dla czterokanałowego downmix (wyjścia lewo-przód, prawo-przód, lewo-tył, prawo-tył), użyj opcji <CODE>-channels 4</CODE>. 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.</P> <P>Domyślna liczba kanałów wyjściowych wynosi 2.</P> <P>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) .</P> <P>Miksowanie na wyjściu więcej niż dwóch kanałów powinno być traktowane jako eksperymentalne.</P> <P><B><A NAME=2.2.2.2>2.2.2.2. Sprzętowe dekodowanie AC3</A></B></P> <P>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).</P> <P><B><A NAME=2.2.2.3>2.2.2.3. Obsługa libmad</A></B></P> <P><A HREF="http://mad.sourceforge.net">libmad</A> jest wieloplatformową biblioteką dekodowania dźwięku MPEG. Jeśli nie wiesz dlaczego to jest dobre, prawdopodobnie nie potrzebujesz tego. </P> <P>Aby włączyć obsługę, skompiluj źródła z opcją <CODE>--enable-mad</CODE>. </P> <P><B><A NAME=2.2.2.4>2.2.2.4. Dźwięk VIVO</A></B></P> <P>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 <B>g.723</B>, zaś pliki VIVO/2.0 mają <B>Vivo Siren</B>. Oba formaty są <U>obsługiwane</U>. Możesz ściągnąć kodek g.723/Siren Win32 DLL z <A HREF="http://www.mplayerhq.hu/MPlayer/samples/drivers32/vivog723.acm">tej strony</A>, a następnie skopiować go do katalogu <CODE>/usr/lib/win32</CODE> lub innego odpowiedniego.</P> <P><B><A NAME=2.2.2.5>2.2.2.5. RealAudio</A></B></P> <P>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</P> <P><B><A NAME=2.2.3>2.2.3. Importowanie kodeków Win32</A></B></P> <P><B><A NAME=2.2.3.1>2.2.3.1. Kodeki VFW</A></B></P> <P>VfW (Video for Windows), jest to stare Video API dla Windows. Jego kodeki mają rozszerzenia .DLL lub (rzadziej) .DRV. Jeśli <B>MPlayer</B> nie działa z twoim AVI:</P> <P> <CODE>UNKNOWN video codec: HFYU (0x55594648)</CODE></P> <P>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):</P> <P> <CODE>VIDC.HFYU=huffyuv.dll</CODE></P> <P>Tak więc będziemy potrzebować pliku huffyuv.dll. Zauważ, że kodeki dźwięku są wyróżnione za pomocą prefiksu MSACM:</P> <P> <CODE>msacm.l3acm=L3codeca.acm</CODE></P> <P>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:</P> <P> <CODE>ftp://ftp.mplayerhq.hu/MPlayer/incoming/[nazwa_kodeka]/</CODE></P> <P><B><A NAME=2.2.3.2>2.2.3.2. Kodeki DirectShow</A></B></P> <P>DirectShow to najnowsze Video API, które jest nawet gorsze, niż jego poprzednik. Sprawy się bardziej komplikują, odkąd: <UL> <LI>system.ini nie zawiera potrzebnych informacji, a w zamian za to jest przechowywany w rejestrze :( <LI>będzie potrzebny nam GUID kodeka. </UL></P> <P>Więc znajdźmy ten przeklęty rejestr ... <UL> <LI>Uruchom 'regedit'. <LI>Wciśnij ctrl-f, odznacz pierwsze dwie opcje i zaznacz trzecią. Wpisz fourcc kodeka (np.: TM20). <LI>Powinno się pokazać pole ze ścieżką i nazwą pliku (np. : C:\WINDOWS\SYSTEM\TM20DEC.AX). <LI>Skoro mamy już plik, potrzebne nam jeszcze GUID. Spróbuj jeszcze raz poszukać, ale tym razem nazwy kodeka, nie fourcc. Jego nazwę można odczytać w File/Properties/Advanced, podczas odtwarzania tego pliku przez Media Player. Jeśli się nie da, to pech ;) Spróbuj zgadnąć (np. szukaj: TrueMotion). <LI>Jeśli znalazłeś (w rejestrze), powinno być tam pole FriendlyName oraz pole CLSID. Zapisz, że 16 bajtów CLSID, to potrzebne nam GUID. </UL></P> <P>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 ... </P> <P>UWAGA: W razie niepowodzenia zrzuć wszystko na M$.</P> <P>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:<BR> ftp://ftp.mplayerhq.hu/MPlayer/incoming/[nazwa_kodeka]/</P> </BODY> </HTML>