view DOCS/Polish/codecs.html @ 4775:080cf3df3e4e

improved event handling, implemented working pause that does not flush all buffers, work around a deadlock in the new threadsafe version 1.5 of libaudio by Tobias Diedrich
author atmos4
date Wed, 20 Feb 2002 22:45:48 +0000
parents ed33540a982b
children ad9d0116616a
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. Zobacz poniżej opis konfiguracji. Jedyną wadą tych
kodeków jest fakt, że aktualnie są one closed-source. :(</P>

<P>Kodeki 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ć /usr/local/lib do /etc/ld.so.conf !</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, ale zakres wartości jest
dziwny: (UAKTUALNIĆ)</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> (...) .</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.</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 jest w SB Live!). 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 nie zadziała).</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>