mpv/DOCS/pl/encoding.html

308 lines
14 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Kodowanie - MEncoder - Koder filmów dla Linuksa</TITLE>
<LINK REL="stylesheet" TYPE="text/css" HREF="../default.css">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
</HEAD>
<BODY>
<H1><A NAME="encoding">7. Kodowanie z MEncoderem</A></H1>
<P>Po kompletną listę dostępnych opcji i przykładów MEncoder, proszę zobaczyć
stronę manuala. Po serie ręcznych przykładów i detali używania różnych
parametrów kodowania, czytaj
<A HREF="../tech/encoding-tips.txt">sztuczki-kodowania</A> gdzie zgromadzone są
rożne wątki mailowe
<A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-users">mplayer-users</A>.
Szukaj w <A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">archiwach</A>
zbiorach dyskusyjnych o wszystkich aspektach problemów dotyczących kodowania
MEncoderem.</P>
<H2><A NAME="2pass">7.1 Kodowanie 2 lub 3-krokowe MPEG-4 ("DivX")</A></H2>
<P><U><B>Kodowanie 2-krokowe:</B></U> jak sama nazwa wskazuje, metoda ta koduje
plik <I>dwukrotnie</I>. Krok pierwszy (<I>krok zdybingujący</I>)
tworzy pliki podręczne (*.log) z rozmiarem kilku megabajtów, nie kasuje ich
jeszcze (możesz usunąć AVI). W drugim kroku, plik 2-kroku (sic!) jest tworzony
używając bitreatu danych z pliku podręcznego. Plik wynikowy będzie miał lepszą
jakość obrazu. Jeśli spotkałeś się z tym po raz pierwszy powinieneś zasięgnąć
rad dostępnych w Internecie.
<P>Przykłady te pokazują jak kodować DVD do 2-krokowego MPEG-4 ("DIVX") AVI. Tylko
dwie komendy są potrzebne:<BR>
<CODE>&nbsp;&nbsp;&nbsp;&nbsp;rm frameno.avi</CODE> - usuń plik, który może
pochodzić z poprzedniego 3-krokowego kodowania (może kolidować z obecnym)<BR>
<CODE>&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2 -ovc lavc -lavcopts
vcodec=mpeg4:vpass=1 -oac copy -o movie.avi<BR>
&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2 -ovc lavc -lavcopts
vcodec=mpeg4:vpass=2 -oac copy -o movie.avi</CODE></P>
<P><U><B>Kodowanie 3-krokowe:</B></U> to przedłużenie 2-krokowego kodowania,
gdzie kodowanie audio zajmuje miejsce w osobnym kroku. Tam metoda włącza
ocenę sugerowania bitreatu wideo dla dopasowania do CD. Także audio kodowane
jest tylko tak, nie tak jak w trybie 2-krokowym. Schematy:</P>
<OL>
<LI>Usuń konfliktowy plik podręczny:
<P><CODE>rm frameno.avi</CODE></P></LI>
<LI>Pierwszy krok:
<P><CODE>mencoder &lt;file/DVD&gt; -ovc frameno -oac mp3lame -lameopts vbr=3 -o frameno.avi</CODE></P>
<P>Zostanie utworzony plik avi zawierający tylko audio, <B>tylko</B> z pożądanym strumieniem audio.
Nie zapomnij o <CODE>-lameopts</CODE>, jeśli chcesz je ustawić.
jeśli kodowałeś długi film, MEncoder wyświetla sugerowane wartości bitrate dla 650Mb,
700Mb, i 800Mb rozmiarów docelowych po ukończeniu kroku pierwszego.</P></LI>
<LI>Drugi krok:
<P><CODE>mencoder &lt;file/DVD&gt; -oac copy
-ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=&lt;bitrate&gt;</CODE></P>
<P>To pierwszy krok kodowania wideo.
Opcjonalnie określony bitreate wideo MEncoder wyświetlił na końcu poprzedniego
kroku.</P></LI>
<LI>Trzeci krok:
<P><CODE>mencoder &lt;file/DVD&gt; -oac copy
-ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=&lt;bitrate&gt;</CODE></P>
<P>Jest to drugi krok kodwania wideo.
Określ ten sam bitreat, co w poprzednim kroku, chyba, że naprawdę wiesz, co
robisz. W tym kroku audio z <CODE>frameno.avi</CODE> zostanie
wsunięte do docelowego pliku... i wszytko jest gotowe!</P></LI>
</OL>
<H4>Przykłady kodowania 3-krokowego:</H4>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;rm frameno.avi</CODE> - usuń plik, który może
pochodzić z poprzedniego 3-krokowego kodowania (może kolidować z obecnym)<BR>
<CODE>&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2 -ovc frameno
-o frameno.avi -oac mp3lame -lameopts vbr=3<BR>
&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2 -ovc lavc
-lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi<BR>
&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2 -ovc lavc
-lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi</CODE></P>
<H2><A NAME="mpeg">7.2 Kodowanie do formatu MPEG</A></H2>
<P>MEncoder może stworzyć wyjściowy plik z formatem MPEG (MPEG-PS). Jes to prawdopodobnie
użyteczne tylko z kodekiem libavcodeca <I>mpeg1video</I>, ponieważ odtwarzacze
- poza MPlayer - poza wideo MPEG1, i MPEG1 warstwa 2 (MP2) strumieniują audio
w plikach MPEG.</P>
<P>Cecha ta jest niezbyt użyteczna w tej chwili, na marginesie prawdopodobnie
zawiera pełno błędów, ale ważna ponieważ MEncoder obecnie nie potrafi kodować audio
MPEG1 warstwy 2 (MP2), którego wszytskie inne odtwarzacze oczekują w plikach MPEG.</P>
<P>Aby zmienić format plików wynikowych MEncodera, użyj opcji <CODE>-of mpeg</CODE>.</P>
<P>Przykład:<BR>
&nbsp;&nbsp;<CODE>mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video
-oac copy &lt;other options&gt; media.avi -o output.mpg</CODE></P>
<H2><A NAME="rescaling">7.3 Skalowanie filmów</A></H2>
<P>Często potrzebna jest zmiana rozmiarów obrazów filmu. Powodów może być wiele,
na przykład dopasowywanie rozmiarów pliku wyjściowego, szerokośc pasma sieci, itp.
Wiele ludzi często skaluje filmy kiedy konwertują DVD lub SVCD do DivX AVI. <B>Jes to błądne.</B>
Zamiast tego czytaj sekcję <A HREF="#aspect">Zachowując aspekt stosunku</A>.</P>
<P>Proces skalowanie nadzorowany jest przez filter wideo <I>'scale'</I>:
<CODE>-vf scale=szerokość:wysokość</CODE>. Jego jakość może zostać ustawiona
przez opcję <CODE>-sws</CODE>. Jeśli nie zostanie określona, MEncoder użyje 0:
fast bilinear.</P>
<H4>Użycje:</H4>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;mencoder input.mpg -ovc lavc -lavcopts
vcodec=mpeg4 -vf scale=640:480 -oac copy -o
output.avi</CODE></P>
<H2><A NAME="copying">7.4 Kopiowanie strumieniowe</A></H2>
<P>MEncoder potrafi przechwycić strumień wejściowy na dwa sposoby: <B>kodując</B> lub
<B>kopiując</B> go. Ta sekcja jest o <B>kopiowaniu</B>.</P>
<UL>
<LI><B>Strumieniowanie wideo</B> (opcja <CODE>-ovc copy</CODE>): niezła robota
może zostać wykonana :)<BR>
Coś jak wkładanie (nie konwertowanie) wideo FLI, VIVO lub MPEG1 do
plików AVI. Oczywiście tylko MPlayer może odtwarzać takie pliki :)
I prwadopodobnie nie posiada prawdziwych wartości dla wszytkich.
Z rozsądkiem: kopiowanie strumieni wideo może być użyteczne na przykład,
kiedy tylko strumień audio był do kodowania (coś w stylu odkopmresowanego
pliku PCM do MP3).</LI>
<LI><B>Strumieniowaqnie audio</B> (opcja <CODE>-oac copy</CODE>): chyba jasne.
Możliwe jest przejęcie zewnętrznego pliku audio (MP3, Vorbis) i jego zapis
do strumienia zewnętrznego. Użyj do tego opcji
<CODE>-audiofile &lt;filename&gt;</CODE>.</LI>
</UL>
<H2><A NAME="fixing">7.5 Naprawianie AVI z uszkodzonymi indeksami lub przeplataniem</A></H2>
<P><P>Prosto kopiujemy strumienie audio i wideo, a <B>MEncoder</B> generuje indeks.
Oczywiście nie naprawi to błądów strumieni wideo i/lub audio. Naprawia
to także pliki z uszkodzonym przeplataniem, tak więc opcja <CODE>-ni</CODE>
będzię potrzebna tak, czy inaczej.</P>
<P>Polecenie: <CODE>mencoder -idx input.avi -ovc copy -oac copy -o output.avi</CODE></P>
<H3><A NAME="appending">7.5.1 Łączenie wielkorotnych plików AVI</A></H3>
<P>Taki efekt uboczny, finkcja naprawiająca uszkodzone AVI włącza MPlayera do łączenia
2 (lub więcej) plików AVI:</P>
<P>Polecenie: <CODE>cat 1.avi 2.avi | mencoder -noidx -ovc copy -oac copy -o output.avi -</CODE></P>
<P><B>Inforamcja:</B> Oczekuje to <CODE>1.avi</CODE> i <CODE>2.avi</CODE> aby użyc tego samego kodeka,
rozdzielczości, stosunku strumieniowania itp, i co najmniej 1.avi nie mże być uszkodzony.
Może musisz najpierw naprawić twój wchodzący AVI, jak opisano <A HREF="#fixing">wyżej</A>.</P>
<H2><A NAME="libavcodec">7.6 Kodowanie z rodziną kodeków libavcodec</A></H2>
<P><A HREF="codecs.html#libavcodec">libavcodec</A> zapewnia proste kodowanie do różnych interesujących
formatów wideo i audio (obecnie kodeki audio są niedostępne). Możesz kodować do następującch kodeków:</P>
<UL>
<LI>mjpeg - Ruchome JPEG</LI>
<LI>h263 - H263</LI>
<LI>h263p - H263 Plus</LI>
<LI>mpeg4 - ISO standard MPEG-4 (kompatybilne DivX 5, XVID)</LI>
<LI>msmpeg4 - pre-standard MPEG-4 wariant MS, v3 (aka DivX3)</LI>
<LI>msmpeg4v2 - pre-standard MPEG-4 MSu, v2 (używany w starych plikach asf)</LI>
<LI>wmv1 - Windows Media Video, wersja 1 (aka WMV7)</LI>
<LI>rv10 - stary kodek RealVideo</LI>
<LI>mpeg1video - wideo MPEG1 :)</LI>
<LI>huffyuv - bezstratna kompresja</LI>
</UL>
<P>Pierwsza kolumna zawiera nazwy kodeków, które powinny być podane po konfiguracji
<CODE>vcodec</CODE>, czyli: <CODE>-lavcopts vcodec=msmpeg4</CODE></P>
<P>Przykład z kompresją MJPEG:<BR>
<CODE>&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2 -o title2.avi -ovc lavc
-lavcopts vcodec=mjpeg -oac copy</CODE></P>
<H2><A NAME="image_files">7.7 Kodowanie z wielokrotnych plików obrazów (JPEGi, PNGsy lub TGAsy)</A></H2>
<P>MEncoder jest w stanie utworzyć filmy z jednego lub więcej plików JPEG, PNG lub TGA.
Z prostym kopiowaniem klatek potrafi utworzyć MJPEG (Ruchome JPEG), MPNG
(Ruchome PNG) lub MTGA (Ruchome TGA) files.</P>
Objeśnienie procesu:
<OL>
<LI>MEncoder <I>dekoduje</I> wejściowy(e) obraz(y) z <CODE>libjpeg</CODE>
(kieedy dekoduje PNGsy, użyje <B>libpng</B>).</LI>
<LI>MEncoder następnie przekazuje dekodowane obrazy do wybranego kompresora wideo
(DivX4, Xvid, ffmpeg msmpeg4, itp...).</LI>
</OL>
<H4>Przykłady</H4>
<P>Wyjaśnienie opcji <CODE>-mf</CODE>, które możesz znaleść niżej opisane
są w manualu.</P>
<P><I>Tworzenie pliku DivX4 ze wszytskich plików JPEG w obecnym katalogu:</I><BR>
&nbsp;&nbsp;<CODE>mencoder -mf on:w=800:h=600:fps=25 -ovc divx4
-o output.avi \*.jpg</CODE></P>
<P><I>Tworzenie pliku DivX4 z niektórych plików JPEG w obecnym katalogu:</I><BR>
&nbsp;&nbsp;<CODE>mencoder -mf on:w=800:h=600:fps=25
-ovc divx4 -o output.avi frame001.jpg,frame002.jpg</CODE></P>
<P><I>Tworzenie pliku Rychomego JPEG (MJPEG) ze wszystkich plików JPEG w obecnym katalogu:</I><BR>
&nbsp;&nbsp;<CODE>mencoder -mf on:w=800:h=600:fps=25 -ovc copy
-o output.avi \*.jpg</CODE></P>
<P><I>Tworzenie pliku nieskompresowanego ze wszytskich plików PNG w obecnym katalogu:</I><BR>
&nbsp;&nbsp;<CODE>mencoder -mf on:w=800:h=600:fps=25:type=png -ovc rawrgb
-o output.avi \*.png</CODE></P>
<P><B>Informacja:</B> Szerokość musi być całkowitą wielokrotnością 4, to limity formatu
RAW RGB AVI.</P>
<P><I>Tworzenie Ruchomego PNG (MPNG) ze wszytskich plików w obecnym katalogu:</I><BR>
&nbsp;&nbsp;<CODE>mencoder -mf on:w=800:h=600:fps=25:type=png -ovc copy
-o output.avi \*.png</CODE></P>
<P><I>Tworzenie Ruchomego TGA (MTGA) ze wszystkich plików TGA w obecnym katalogu:</I><BR>
&nbsp;&nbsp;<CODE>mencoder -mf on:w=800:h=600:fps=25:type=tga -ovc copy
-o output.avi \*.tga</CODE></P>
<H2><A NAME="vobsub">7.8 Wyciąganie napisów DVD do pliku Vobsub</A></H2>
<P>MEncoder potrafi wyciągnąc napisy z DVD do pliku o formacie Vobsub.
Polegają one na parach kodowanych plików w
<CODE>.idx</CODE> i <CODE>.sub</CODE> i zazwyczaj pakowane są w pojedyncze archiwum
<CODE>.rar</CODE>. MPlayer potrafi je odtwarzać z opcjami
<CODE>-vobsub</CODE> i <CODE>-vobsubid</CODE>.</P>
<P>Ty określasz nazwę główną (tj. bez rozszerzenia <CODE>.idx</CODE> lub
<CODE>.sub</CODE>) pliku wyjściowego z <CODE>-vobsubout</CODE>
i indeks dla tych napisów w pliku wynikowym z <CODE>-vobsuboutindex</CODE>.</P>
<P>Jeśli plik wejścowy nie pochodzi z DVD powinienieś użyć <CODE>-ifo</CODE>, aby
wskazać plik <CODE>.ifo</CODE> wymagany do konstrukcji pliku wynikowego
<CODE>.idx</CODE>.</P>
<P>Jeśli plik wejściowy nie pochodzi z DVD, a ty nie masz pliku <CODE>.ifo</CODE>
będziesz musiał użyć opcji <CODE>-vobsubid</CODE>aby poinformować, który id języka
należy włożyć do pliku <CODE>.idx</CODE>.</P>
<P>Każde uruchomienie będzie dodawać uruchamiane napisy jeśli pliki <CODE>.idx</CODE> i
<CODE>.sub</CODE> już istnieją. Powinieneś więc usunąć jakieś przed startem.</P>
<H4>Przykłady:</H4>
<P><I>Kopiowanie dwóch napisów z DVD podczas kodowania 3-krokowego</I><BR>
&nbsp;&nbsp;<CODE>rm subtitles.idx subtitles.sub</CODE><BR>
&nbsp;&nbsp;<CODE>mencoder -dvd 1 -vobsubout subtitles -vobsuboutindex 0
-sid 2 -o frameno.avi -ovc frameno -oac mp3lame -lameopts vbr=3</CODE><BR>
&nbsp;&nbsp;<CODE>mencoder -dvd 1 -oac copy -ovc divx4 -divx4opts pass=1</CODE><BR>
&nbsp;&nbsp;<CODE>mencoder -dvd 1 -oac copy -ovc divx4 -divx4opts pass=2 -vobsubout
subtitles -vobsuboutindex 1 -sid 5</CODE></P>
<P><I>Kopiowanie francuskich napisów z pliku MPEG</I><BR>
&nbsp;&nbsp;<CODE>rm subtitles.idx subtitles.sub</CODE><BR>
&nbsp;&nbsp;<CODE>mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles
-vobsuboutindex 0 -vobsuboutid fr -sid 1</CODE></P>
<H2><A NAME="aspect">7.9 Zachowanie stosunku</A></H2>
<P>Pliki DVD i SVCD (tj. MPEG1/2) zawierają wartość stosunku, która opisuje, jak
odtwarzacze powinny skalować strumień wideo (np.: 480x480 + 4:3 = 640x480).
Jednak, kiedy kodujesz do plików AVI (DivX), powinieneś wiedzieć,
że nagłówki AVI nie zapamiętują takiej wartości.
W taki sposób jedynym rozwiąznaniem jest skalowanie!</P>
<P>MPEG4 posiada niespotykaną cechę: strumień wideo może zawierać jego wymagany
stosunek. Tak, tylko takie pliki jak MPEG1/2 (DVD, SVCD).
Przesadzając, <U>nie</U> ma odtwarzaczy wideo które obsługują tą cechę.
Za wyjątkiem MPlayera.</P>
<P>Cecha ta może być użyta tylko z kodekiem <CODE>mpeg4</CODE> <B>libavcodec</B>a.
Zatrzymaj w świadomości: chociaż MPlayer poprawnie odtwrza stworzone pliki,
inne odtwarzacze użyją błędnego stosunku.</P>
<P>Powinineś poważnie ściąć czarne obramówki na około i poniżej obrazu filmu.
Zobacz manual odnośnie użytku filtrów <CODE>cropdetect</CODE> i
<CODE>crop</CODE>.</P>
<H4>Użycie:</H4>
<P><CODE>$ mencoder sample-svcd.mpg -ovc lavc -lavcopts
vcodec=mpeg4:aspect=16.0/9.0 -vf crop=714:548:0:14 -oac copy -o output.avi</CODE></P>
</BODY>
</HTML>