view DOCS/pl/encoding.html @ 9797:86e080e9c31f

atm shmem.c is only needed for cache2
author faust3
date Wed, 02 Apr 2003 16:40:02 +0000
parents 329ad52cf08c
children a5785a0b9ee1
line wrap: on
line source

<!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>