# 7. Kodowanie z MEncoderem

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 sztuczki-kodowania gdzie zgromadzone są rożne wątki mailowe mplayer-users. Szukaj w archiwach zbiorach dyskusyjnych o wszystkich aspektach problemów dotyczących kodowania MEncoderem.

## 7.1 Kodowanie 2 lub 3-krokowe MPEG-4 ("DivX")

Kodowanie 2-krokowe: jak sama nazwa wskazuje, metoda ta koduje plik dwukrotnie. Krok pierwszy (krok zdybingują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 spotkałeś się z tym po raz pierwszy powinieneś zasięgnąć rad dostępnych w Internecie.

Przykłady te pokazują jak kodować DVD do 2-krokowego MPEG-4 ("DIVX") AVI. Tylko dwie komendy są potrzebne:
`rm frameno.avi` - usuń plik, który może pochodzić z poprzedniego 3-krokowego kodowania (może kolidować z obecnym)
`mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi
mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi`

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

1. Usuń konfliktowy plik podręczny:

   `rm frameno.avi`

2. Pierwszy krok:

   `mencoder <file/DVD> -ovc frameno -oac mp3lame -lameopts vbr=3 -o frameno.avi`

   Zostanie utworzony plik avi zawierający tylko audio, tylko z pożądanym strumieniem audio. Nie zapomnij o `-lameopts`, 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.

3. Drugi krok:

   `mencoder <file/DVD> -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=<bitrate>`

   To pierwszy krok kodowania wideo. Opcjonalnie określony bitreate wideo MEncoder wyświetlił na końcu poprzedniego kroku.

4. Trzeci krok:

   `mencoder <file/DVD> -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=<bitrate>`

   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 `frameno.avi` zostanie wsunięte do docelowego pliku... i wszytko jest gotowe!

#### Przykłady kodowania 3-krokowego:

`rm frameno.avi` - usuń plik, który może pochodzić z poprzedniego 3-krokowego kodowania (może kolidować z obecnym)
`mencoder -dvd 2 -ovc frameno -o frameno.avi -oac mp3lame -lameopts vbr=3
mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi
mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi`

## 7.2 Kodowanie do formatu MPEG

MEncoder może stworzyć wyjściowy plik z formatem MPEG (MPEG-PS). Jes to prawdopodobnie użyteczne tylko z kodekiem libavcodeca mpeg1video, ponieważ odtwarzacze - poza MPlayer - poza wideo MPEG1, i MPEG1 warstwa 2 (MP2) strumieniują audio w plikach MPEG.

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.

Aby zmienić format plików wynikowych MEncodera, użyj opcji `-of mpeg`.

Przykład:
`mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac copy <other options> media.avi -o output.mpg`

## 7.3 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, szerokośc pasma sieci, itp. Wiele ludzi często skaluje filmy kiedy konwertują DVD lub SVCD do DivX AVI. Jes to błądne. Zamiast tego czytaj sekcję Zachowując aspekt stosunku.

Proces skalowanie nadzorowany jest przez filter wideo 'scale': `-vf scale=szerokość:wysokość`. Jego jakość może zostać ustawiona przez opcję `-sws`. Jeśli nie zostanie określona, MEncoder użyje 0: fast bilinear.

#### Użycje:

`mencoder input.mpg -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=640:480 -oac copy -o output.avi`

## 7.4 Kopiowanie strumieniowe

MEncoder potrafi przechwycić strumień wejściowy na dwa sposoby: kodując lub kopiując go. Ta sekcja jest o kopiowaniu.

- Strumieniowanie wideo (opcja `-ovc copy`): niezła robota może zostać wykonana :)
  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).
- Strumieniowaqnie audio (opcja `-oac copy`): 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 `-audiofile <filename>`.

## 7.5 Naprawianie AVI z uszkodzonymi indeksami lub przeplataniem

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 pliki z uszkodzonym przeplataniem, tak więc opcja `-ni` będzię potrzebna tak, czy inaczej.

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

### 7.5.1 Łączenie wielkorotnych plików AVI

Taki efekt uboczny, finkcja naprawiająca uszkodzone AVI włącza MPlayera do łączenia 2 (lub więcej) plików AVI:

Polecenie: `cat 1.avi 2.avi | mencoder -noidx -ovc copy -oac copy -o output.avi -`

Inforamcja: Oczekuje to `1.avi` i `2.avi` 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 wyżej.

## 7.6 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:

- mjpeg - Ruchome JPEG
- h263 - H263
- h263p - H263 Plus
- mpeg4 - ISO standard MPEG-4 (kompatybilne DivX 5, XVID)
- msmpeg4 - pre-standard MPEG-4 wariant MS, v3 (aka DivX3)
- msmpeg4v2 - pre-standard MPEG-4 MSu, v2 (używany w starych plikach asf)
- wmv1 - Windows Media Video, wersja 1 (aka WMV7)
- rv10 - stary kodek RealVideo
- mpeg1video - wideo MPEG1 :)
- huffyuv - bezstratna kompresja

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

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

## 7.7 Kodowanie z wielokrotnych plików obrazów (JPEGi, PNGsy lub TGAsy)

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.

Objeśnienie procesu:

1. MEncoder dekoduje wejściowy(e) obraz(y) z `libjpeg` (kieedy dekoduje PNGsy, użyje libpng).
2. MEncoder następnie przekazuje dekodowane obrazy do wybranego kompresora wideo (DivX4, Xvid, ffmpeg msmpeg4, itp...).

#### Przykłady

Wyjaśnienie opcji `-mf`, które możesz znaleść niżej opisane są w manualu.

Tworzenie pliku DivX4 ze wszytskich plików JPEG w obecnym katalogu:
`mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o output.avi \*.jpg`

Tworzenie pliku DivX4 z niektórych plików JPEG w obecnym katalogu:
`mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o output.avi frame001.jpg,frame002.jpg`

Tworzenie pliku Rychomego JPEG (MJPEG) ze wszystkich plików JPEG w obecnym katalogu:
`mencoder -mf on:w=800:h=600:fps=25 -ovc copy -o output.avi \*.jpg`

Tworzenie pliku nieskompresowanego ze wszytskich plików PNG w obecnym katalogu:
`mencoder -mf on:w=800:h=600:fps=25:type=png -ovc rawrgb -o output.avi \*.png`

Informacja: Szerokość musi być całkowitą wielokrotnością 4, to limity formatu RAW RGB AVI.

Tworzenie Ruchomego PNG (MPNG) ze wszytskich plików w obecnym katalogu:
`mencoder -mf on:w=800:h=600:fps=25:type=png -ovc copy -o output.avi \*.png`

Tworzenie Ruchomego TGA (MTGA) ze wszystkich plików TGA w obecnym katalogu:
`mencoder -mf on:w=800:h=600:fps=25:type=tga -ovc copy -o output.avi \*.tga`

## 7.8 Wyciąganie napisów DVD do pliku Vobsub

MEncoder potrafi wyciągnąc napisy z DVD do pliku o formacie Vobsub. Polegają one na parach kodowanych plików w `.idx` i `.sub` i zazwyczaj pakowane są w pojedyncze archiwum `.rar`. MPlayer potrafi je odtwarzać z opcjami `-vobsub` i `-vobsubid`.

Ty określasz nazwę główną (tj. bez rozszerzenia `.idx` lub `.sub`) pliku wyjściowego z `-vobsubout` i indeks dla tych napisów w pliku wynikowym z `-vobsuboutindex`.

Jeśli plik wejścowy nie pochodzi z DVD powinienieś użyć `-ifo`, aby wskazać plik `.ifo` wymagany do konstrukcji pliku wynikowego `.idx`.

Jeśli plik wejściowy nie pochodzi z DVD, a ty nie masz pliku `.ifo` będziesz musiał użyć opcji `-vobsubid`aby poinformować, który id języka należy włożyć do pliku `.idx`.

Każde uruchomienie będzie dodawać uruchamiane napisy jeśli pliki `.idx` i `.sub` już istnieją. Powinieneś więc usunąć jakieś przed startem.

#### Przykłady:

Kopiowanie dwóch napisów z DVD podczas kodowania 3-krokowego
`rm subtitles.idx subtitles.sub`
`mencoder -dvd 1 -vobsubout subtitles -vobsuboutindex 0 -sid 2 -o frameno.avi -ovc frameno -oac mp3lame -lameopts vbr=3`
`mencoder -dvd 1 -oac copy -ovc divx4 -divx4opts pass=1`
`mencoder -dvd 1 -oac copy -ovc divx4 -divx4opts pass=2 -vobsubout subtitles -vobsuboutindex 1 -sid 5`

Kopiowanie francuskich napisów z pliku MPEG
`rm subtitles.idx subtitles.sub`
`mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles -vobsuboutindex 0 -vobsuboutid fr -sid 1`

## 7.9 Zachowanie stosunku

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!

MPEG4 posiada niespotykaną cechę: strumień wideo może zawierać jego wymagany stosunek. Tak, tylko takie pliki jak MPEG1/2 (DVD, SVCD). Przesadzając, nie ma odtwarzaczy wideo które obsługują tą cechę. Za wyjątkiem MPlayera.

Cecha ta może być użyta tylko z kodekiem `mpeg4` libavcodeca. Zatrzymaj w świadomości: chociaż MPlayer poprawnie odtwrza stworzone pliki, inne odtwarzacze użyją błędnego stosunku.

Powinineś poważnie ściąć czarne obramówki na około i poniżej obrazu filmu. Zobacz manual odnośnie użytku filtrów `cropdetect` i `crop`.

#### Użycie:

`$ 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`