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>&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="http://avifile.sourceforge.net">http://avifile.sourceforge.net</A></P>

<P>Jeśli to nie zadziała, spróbuj jeszcze:</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;</TD><TD VALIGN=top><FONT face="Verdana, Arial, Helvetica,
sans-serif" size=2>-vc&nbsp;odivx</TD><TD>&nbsp;&nbsp;</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&nbsp;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>&nbsp;&nbsp;</TD><TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>0</TD><TD>&nbsp;&nbsp;</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>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<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>