2.4. Kodowanie z MEncoderem

2.4.1. Cechy

MEncoder (Koder Filmów Mplayera) to prosty koder filmów zaprojektowany do kodowania filmów odtwarzanych MPlayerem. (AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET) do innych formatów odtwarzanych przez MPlayera (patrz niżej). Może kodowac z rozmaitymi kodekami, takimi jak DivX4 (1 lub 2 krokowo), libavcodec, PCM/MP3/VBRMP3 audio. Może także kopiować strumieniowo i zmianiać wymiary filmu.

2.4.2. Kompilowanie

Jesteś gotowy? Zapewne wiesz, że inne narzędzia kodowania potrzebują zainstalowanej biblioteki avifile. MEncoder nie potrzebuje ich wszystkich.

2.4.3. Cechy MEncodera

Planowane cechy :

2.4.3.1. Kodowanie DivX4 2 lub 3-krokowo

2-krokowe kodowanie: nazwa sama mówi, że ta metoda koduje plik dwa razy. Pierwsze kodowanie (krok zdubingujący) 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 pierwszy raz o tym słyszysz powinieneś zasięgnąc rady w dostępnch w Internecie przewodnikach.

Ten przykład pokazuje jak kodować DVD do dwukrokowego AVI DiviX4. Tylko dwóch poleceń potrzebujesz:
    rm frameno.avi - usuń plik, który może pochodzić z poprzedniego 3 krokowego kodowania (może kolidować z obecnym)
    mencoder -dvd 2 -divx4opts br=1100 -o movie.avi -pass 1
    mencoder -dvd 2 -divx4opts br=1100 -o movie.avi -pass 2

3-krokowe kodowanie: 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:

rm frameno.avi usuń konfliktowe pliki podręczne
mencoder <file/DVD> -ovc frameno -o frameno.avi Pierwszy krok: tylko-audio plik avi zostanie utworzony, zawierający TYLKO pożądany strumień audio. Nie zapomnij o -lameopts, jeśli potrzebujesz to 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.
mencoder <file/DVD> -oac copy -pass 1 -divx4opts br=<bitrate> Drugi krok: inaczej zwany pierwszym krokiem kodowania wideo DivX4. Opcjonalnie określony bitreate wideo MEncoder wyświetlł na końcu poprzedniego kroku.
mencoder <file/DVD> -oac copy -pass 2 -divx4opts br=<bitrate> Trzeci krok: inaczej zwany drugim krokiem kodowania wideo DiviX4. Opcjonalnie określony bitreate wideo MEncoder wyświetlł na końcu poprzedniego kroku. W tym kroku audio z frameno.avi zostanie wsunięte do docelowego pliku... i wszytko jest gotowe!

Przykład kodowanie 3-krokowego :

    rm frameno.avi - usuń plik pochodzący z poprzedniego kodowania 3-krokowego (będzie kolidował z obecnym)
    mencoder -dvd 2 -ovc frameno -o frameno.avi
    mencoder -dvd 2 -divx4opts br=1100 -oac copy -o movie.avi -pass 1
    mencoder -dvd 2 -divx4opts br=1100 -oac copy -o movie.avi -pass 2

2 lub 3-krokowe kodowanie używając wewnętrznego kontrolera libavcodec : Opcjonalnie możesz użyć trybu 2 lub 3-krokowego wewnętrznego libavcodec'a, możde dać ci to lepszą końcową ścisłość tempa, niż używanie zewnątrznego, 2-krokowego DivX4-inspired kontrolera tempa z libavcodec.

    2-krokowe kodowanie :
    rm -f lavc_stats.txt
    mencoder -dvd 2 -ovc lavc -lacvopts vpass=1 (opcje-audio) -o movie.avi
    mencoder -dvd 2 -ovc lavc -lacvopts vpass=2 (opcje-audio) -o movie.avi


    3-krokowe kodowanie :
    rm -f frameno.avi lavc_stats.txt
    mencoder -dvd 2 -ovc frameno (opcje-audio) -o frameno.avi
    mencoder -dvd 2 -ovc lavc -lacvopts vpass=1 -oac copy -o movie.avi
    mencoder -dvd 2 -ovc lavc -lacvopts vpass=2 -oac copy -o movie.avi

2.4.3.2. Skalowanie filmów

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, kodując SVCD do DivX. Zripowanie DVD są często źle skalowane, na przyklad DVD 4:3 powinno być 640x480, szczególnie kiedy chcesz zmieścić go na 1 CD i mieć dobrą jakość w tym samym czasie. SVCD mają rozmiar 480x480 i ich nagłówki zawierają stosunek, który odtwarzacze powinny użyć (np.: 480x480 + 4:3 = 640x480). Jednak, gdy kodujesz do plików AVI (DivX), musisz być świadom tego, że nagłówki AVI na zapamiętują tej wartośći W taki sposób jedynym rozwiąznaniem jest skalowanie.

Proces skalowania jest prowadzony przez filter wideo 'scale': -vop scale=X:Y. Jakość może być ustawiona przez opcję -sws. Jeśli nie jest określona, MEncoder użyje 0: szybki bilinear.

Sposób użycia :
    mencoder sample-svcd.mpg -divx4opts br=1300 -vop scale=640:480 -sws 2 -o output.avi

2.4.3.3. Kopiowanie strumieniowe

MEncoder może przechwytywać strumienie wejściowe na dwa sposoby: kodując lub kopiując je. Ta sekcja dotyczy kopiowania.

  • Strumień wideo (opcja -ovc copy): niezłą robotę można wykonać :)
    Coś jak, wkładanie (nie konwertacja!) wideo FLI, VIVO lub MPEG1 wewnątrz pliku! 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).
  • Strumienie audio (opcja -oac copy): bezpośredni. Możliwe jest przejęcie zewnętrznego pliku audio (MP3, AC3, Vorbis) i jego zapis do strumienia zewnętrznego. Użyj do tego opcji -audiofile <filename> .

2.4.3.4. Naprawianie AVI z uszkodzonymi indeksami lub interleavingiem

Prosto kopiujemy strumienie audio i wideo, a MEncoder generuje indeks. Oczywiście nie naprawi to błądów strumieni wideo i/lub audio. Naprawia to także fliki z uszkodzonym interleavingiem, tak więc opcja -ni będzię potrzebna tak, czy inaczej.

Polecenie: mencoder -idx input.avi -ovc copy -oac copy -o output.avi

2.4.3.5. Kodowanie z rodziną kodeków libavcodec

libavcodec 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:

Pierwsza kolumna zawiera nazwy kodeków, które powinny być podane po konfiguracji vcodec, w stylu: -lavcopts vcodec=msmpeg4

Przykład z kompresją MJPEG :
    mencoder -dvd 2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg

2.4.3.6. Kodowanie z wielokrotnego wejścia obrazu pliku (JPEGi lub PNGsy)

MEncoder potrafi utworzyć film z jednego lub kilku plików JPEG lub PNG. Za pomocą prostego kopiowania klatki może stworzyć plik MJPEG (Motion JPEG) lub MPNG (Motion PNG).

Wyjaśnienie procesu

MEncoder dekoduje obraz(y) wejściowy z libjpeg (kiedy dekoduje PNGsy, używa libpng).

MEncoder wtedy przekazuje dekodowany obraz do kompresora wideo (DivX4, Xvid, ffmpeg msmpeg4, itp...). Obecnie dekoder PNG może tylko zapisywać do formatów RGB, tak więc nie może być użyty z kodekami króre wymagają YUV jako wejścia, tak jak DivX4 lub msmpeg4 ffmpeg'a.

Przykłady

Objaśnienia opcji -mf możesz znaleść pod spodem globalnej sekcji Opcje i w manualu systemowym.

Tworzenie pliku DivX4 ze wszystkich plików JPEG w bieżącym katalogu:
  mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o output.avi

Tworzenie pliku DivX4 z któregoś pliku JPEG w bieżącym katalogu :
  mencoder frame001.jpg,frame002.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o output.avi

Tworzenie pliku Motion JPEG (MJPEG) file ze wszystkich plików JPEG w bieżącym katalogu :
  mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc copy -o output.avi

Tworzenie nieskompresowanych plików ze wszystkich plików PNG w bieżącym katalogu :
  mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc raw -o output.avi

Tworzenie pliku Motion PNG (MPNG) ze wszystkich plików PNG w bieżącym katalogu :
  mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc copy -o output.avi

2.4.4. Składnia

  mencoder [opcja] [plik wejściowy] [opcja] ...

2.4.5. Dostępne opcje

INFORMACJA: dla wszystkich dostępnyc opcji czytaj, czytaj manual !

Z racji, że MEncoder jest zbudowany na tym samym kodzie co MPlayer, istnieje wiele opcji MPlayera, które działają w MEncoderze także! Jak widzisz, możesz użyć -sid do zripowania DVD z napisami lub -noidx aby pominąć pełny błędów indeks pliku AVI. Bądź inspirujący!

-ss czas zacznij kodować od podanego czasu (może tylko zacząć od klatki !)
-endpos czas zatrzymaj kodowanie w podanym czasie. Zobacz maual po przykłady !
-o plik określ plik wyjściowy
-sws 0-2 typ metody skalowania
  0 - szybki bilinear
  1 - bilinear
  2 - bicubic (lepsza jakość)
-ovc nazwa_kodeka Koduj z podanym kodekiem (nazwa z codecs.conf). Przykłady:
  help - wyświtl listę dostępnych kodeków
  rawrgb - ?
  copy - nie koduje, tylko kopiuje strumień (teraz tylko z AVI/ASF)
  divx4 - koduje do DivX4
  lavc - koduje z kodemiem z ibavcodec
  vfw - koduje z Windows DLL
-oac nazwa_kodeka Koduje z podanym kodekiem (nazwa z codecs.conf). Przykłady:
  help - wyświetl listę dostępnych kodeków
  copy - nie koduje, tylko kopiuje strumień (teraz tylko z AVI/ASF)
  pcm - koduje do niespompresowanego PCM
  mp3lame - koduje do MP3 (używając Lame)
-mf opcje wielokrotne Używa kiedy koduje z wielokrotnych plików JPEG. Jego pod-opcje to:
  on - włącza obsługę plików wielokrotnych
  w=<wartość> - szerkość pliku wyjściowego
  h=<wartość> - wyskość pliku wyjścowego
  fps=<wartość> - ilość fps'ów pliku wyjściowego
  type=<wartość> - rodzaj pliku wejściowego (dostępne typy : jpeg, png)
-divx4opts Jeśli kodujesz do DivX4, możesz określić jego opcje tutaj, np:
  -divx4opts br=1800:deinterlace:key=250
Ogólne opcje: (po pełną listę sprawdź manual!)
  help - wyświetl pomoc
  br=<warość> - określ bitreate w kbitach <4-16000> lub bitach <16001-24000000>
  q=<wartość> - jakość (1-najszybsza, 5-najlepsza - domyślnie 5)
  key=<wartość> - przerwa klatek
-lavcopts Jeśli kodujesz do libavcodec, możesz określić jego opcje tutaj, np:
  -lavcopts vcodec=msmpeg4:vbitrate=1800:vhq:keyint=250
Ogólne opcje: (po pełną listę sprawdź manual!)
  help - wyświetl pomoc
  vcodec=<wartość> - wybierz kodek wideo (po pełną listę zobacz sekcję libavcodec)
  vbitrate=<wartość> - określ bitrate w kbitach <4-16000> lub bitach <16001-24000000>
  vhq - wysoka jakość
  keyint=<wartość> - przerwa klatki
-lameopts Jeśli kodujesz do MP2 z libmp3lame, możesz określić jego parametry tutaj, np:
  -lameopts q=3
  -lameopts br=192:cbr
Opcje ogólne: (po pełną listę sprawdź manual)
  help - wyświetl pomoc
  cbr - wybierz CBR MP3 (domyślnie jest VBR)
  br=<wartość> - określ bitrate w kbitach <0-1024> (to tylko dla CBR!)
  q=<wartość> - jakość (0-największa, 9-najszybsza - domyślnie 0) (to tylko dla VBR!)
  vbr=<wartość> - pod-tryb VBR (3-ABR, lepsza jakość/prędkość) (to tylko dla VBR!)

2.4.6. Przykłady

Używanie MEncodera jest najprostszą rzeczą na świecie. Zobacz następujące:

Kodowania z DVD, tutuł 2 :
    mencoder -dvd 2 -o title2.avi

To samo, ale z rodziną libavcodec, kompresja MJPEG :
    mencoder -dvd 2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -ffourcc mjpg

Kodowanie z DVD, tytuł 2, ze skalowaniem :
    mencoder -dvd 2 -vop scale=640:480 -sws 2 -o title2.avi

Kodowanie z HTTP :
    mencoder http://mplayer.hq/example.avi -o example.avi

Kodowanie z pipe :
    rar p test-SVCD.rar | mencoder -divx4opts br=800 -ofps 24 -pass 1 -- -

Kodowanie z wielokrotnego pliku *.vob :
    cat *.vob | mencoder <options> -

Kodowanie z tunera (dla opcji tunera zobacz sekcję wejścia TV !) :
    mencoder -tv on:driver=v4l:width=640:height=480 <options>

Po wszytskie dostępne opcje, sprawdź manual MEncodera!