Kodowanie z MEncoderem
Pełna lista dostępnych opcji MEncodera oraz
przykłady znajdują sie na stronie man. W pliku encoding-tips
znajduje się dużo przykładów i przewodników skompletowanych z wielu wątków listy dyskusyjnej mplayer-users. W
archiwum
znajdziesz mnóstwo dyskusji o aspektach i problemach związanych z kodowaniem
przy pomocy MEncodera.
Kodowanie 2 lub 3-przebiegowe MPEG-4 ("DivX")Kodowanie 2-przebiegowe
Nazwa pochodzi od faktu, że przy użyciu tej metody plik kodowany jest dwa razy.
Pierwsze kodowanie (dubbed pass) tworzy pliki tymczasowe
(*.log) o rozmiarze kilku megabajtów, nie kasuj ich odrazu
(możesz natomiast skasować plik AVI). W drugim przebiegu
przy pomocy danych o bitrate'cie z plików tymczasowych tworzony jest plik wyjściowy
2-przebiegu. Plik końcowy będzie miał o wiele lepszą jakość w porównaniu ze standardowym 1-przebiegowym kodowaniem.
Jeżeli pierwszy raz o tym słyszysz, powinieneś zajrzeć do któregoś z wielu
przewodników dostępnych w sieci.
Ten przykład pokazuje jak zakodować DVD do 2-przebiegowego MPEG-4 ("DivX") AVI.
Będą do tego potrzebne tylko dwie komendy:
rm frameno.avi
usuń ten plik, który może pochodzić z poprzedniego 3-przebiegowego kodowania (wpływa on na aktualny)
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o film.avi
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o film.aviKodowanie 3-przebiegowe
Jest to rozszerzenie kodowania 2-przebiegowego, gdzie dźwięk jest kodowany osobno. Ta metoda wyświetla zalecany bitrate
taki, aby film zmieścił sie na pojedyńczą płytę CD. Również, dźwięk kodowany jest tylko raz, inaczej niż w trybie 2-przebiegowym.
Schemat wygląda tak:
Usuń przeszkadzający plik tymczasowy:
rm frameno.aviPierwszy przebieg:mencoder plik/DVD -ovc frameno -oac mp3lame -lameopts vbr=3 -o frameno.avi
Zostanie stworzony plik avi tylko ze scieżką dźwiękową, zawierający
jedynie rządany strumień audio. Nie zapomnij o
, jeżeli musisz je ustawić. Jeśli kodowałeś długi film, MEncoder,
po zakończeniu tego przebiegu, wypisze zalecane wartości bitrate'u dla docelowych pojemności 650Mb, 700Mb, i 800Mb.
Drugi przebieg:
mencoder plik/DVD -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=bitrate
Jest to pierwszy przebieg kodowania video. Opcjonalnie ustal video bitrate na ten który MEncoder wypisał
na końcu poprzedniego przebiegu.Trzeci przebieg:
mencoder plik/DVD -oac copy -pass 2 \
-ovc divx4 -divx4opts br=bitrate
Jest to drugi przebieg kodowania video. Ustal ten sam bitrate co w poprzednim przebiegu, chyba że naprawdę wiesz co robisz.
W tym przebiegu, dźwięk z frameno.avi będzie dołączony do pliku końcowego... i gotowe!
Przykład 3-przebiegowego kodowaniarm frameno.avi
usuń ten plik, który może pochodzić z poprzedniego 3-przebiegowego kodowania (wpływa on na aktualny)
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 film.avi
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o film.aviKodowanie do formatu MPEGMEncoder może tworzyć pliki formatu MPEG (MPEG-PS).
Jest to prawdopodobnie użyteczne tylko z kodekiem mpeg1video
pochodzącym z libavcodec, ponieważ odtwarzacze - za wyjątkiem
MPlayera - oczekują obrazu zakodowanego w MPEG1 i
strumienia dźwiękowego w MPEG1 warstwa (layer) 2 (MP2) w pliku MPEG.
Cecha ta nie jest zbytnio przydatna w tej chwili, poza tym zawiera prawdopodobnie wiele błędów, ale najważniejsze jest to,
że MEncoder w tej chwili nie może kodować 2 warstwy MPEG1 (MP2) audio której oczekują wszystkie odtwarzacze w plikach MPEG.
Aby zmienić wyjściowy format plików MEncodera, użyj opcji .
Przykład:
mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac copy inne opcjemedia.avi -o wyjscie.mpgPrzeskalowywanie filmów
Najczęściej potrzeba zmiany wielkości obrazu jest nagła. Jej powodów może być wiele:
zmniejszenie rozmiaru pliku, przepustowość sieci, itd. Wiekszość ludzi stosuje skalowanie
przy konwertowaniu DVD lub SVCD do DivXa (AVI). To jest złe rozwiązanie.
Zamiast tak robić, przeczytaj sekcje Zachowywanie proporcji obrazu.
Proces skalowania obsługiwany jest przez filtr video scale
.
Jego jakość może być ustawiona parametrem .
Jeśli nie jest on podany MEncoder użyje wartości 0: szybki
bilinearny.
Przykład:
mencoder wejscie.mpg -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=640:480-o wyjscie.aviKopiowanie strumieniaMEncoder obsługuje strumienie wejściowe na dwa sposoby:
koduje lub kopiuje
je. Ta sekcja jest o kopiowaniu.
Strumień video (opcja ):
ładne rzeczy można wyczyniać:) Jak, wstawianie (nie konwertowanie) FLI, VIDO lub MPEG1 video w plik AVI !
Oczywiście tylko MPlayer potrafi odtwarzać takie pliki :) I prawdopodobnie nie ma
dla tego żadnego sensownego zastosowania. Na zdrowy rozsądek: kopiowanie strumieni video może być przydatne
tylko wtedy, gdy np. tylko strumień audio ma być zakodowany (np. PCM do MP3).
Strumień audio (opcja ):
prosto i przystępnie. Możliwe jest wmiksowanie zewnętrznego źródła (MP3, WAV) do strumienia wyjściowego.
Użyj opcji do tego celu.
Naprawianie plików AVI ze zniszczonym indeksem lub przeplotem
Najprostsza sprawa. Po prostu kopiujemy strumień audio i video, a
MEncoder generuje indeks. Oczywiście nie
naprawi to możliwych błęów w strumieniu video i/lub audio, ale za to, naprawi pliki z zepsutym przeplotem,
+tak więc opcja nie będzie tu już potrzebna.
Komenda:
mencoder -idx wejscie.avi -ovc copy -oac copy -o wyjscie.aviŁącznie wielu plików AVI
Efektem ubocznym funkcji naprawiania zepsutych plików AVI jest możliwości łączenia
2 (lub więcej) plików AVI:
Komenda:
cat 1.avi 2.avi | mencoder -noidx -ovc copy -oac copy -o wyjscie.avi -
Komenda ta oczekuje tego, żeby1.avi i 2.avi używały tego
samego kodeka, rozdzielczości, szybkości strumienia (stream rate), i przynajmniej
1.avi nie może być zepsute. Możliwe, że będziesz musiał naprawić pliki wejściowe,
jak było opisane
powyżej.
Kodowanie przy pomocy rodziny kodeków libavcodec
libavcodec umożliwia proste kodowanie do wielu
interesujących formatów video i audio (narazie kodeki audio nie są obsługiwane).
Możesz kodować do następujących kodeków (mniej lub bardziej aktualne)
Nazwa kodekaOpismjpeg
Ruchomy JPEG
ljpeg
Bezstratny JPEG
h263
H263
h263p
H263 Plus
mpeg4
Standtard ISO MPEG-4 (DivX 5, XVID kompatybilne)
msmpeg4
pierwotny wariant MPEG-4 przez MS, v3 (DivX3)
msmpeg4v2
pierwotny wariant MPEG-4 przez MS, v2 (używany w starych plikach asf)
wmv1
Windows Media Video, wersja 1 (WMV7)
wmv2
Windows Media Video, wersja 2 (WMV8)
rv10
Stary kodek RealVideo
mpeg1video
MPEG1 video
mpeg2video
MPEG2 video
huffyuv
bezstratna kompresja
asv1
ASUS Video v1
asv2
ASUS Video v2
ffv1
bezstratny kodek video FFmpeg
Pierwsza kolumna zawiera nazwę kodeka, która powinna być podana za opcją
vcodec, np:
Przykład z kompresją MJPEG:
mencoder dvd://2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -oac copyKodowanie z wielu wejściowych plików obrazkowych (JPEG,PNG lub TGA)MEncoder jest w stanie stworzyć film z jednego
lub wielu plików JPEG, PNG lub TGA. Poprzez proste kopiowanie ramek może stworzyć pliki MJPEG
(Motion(ruchomy - przypis tłumacza) JPEG), MPNG (Motion PNG) lub MTGA (Motion TGA).
Jak to działa:MEncoderdekoduje wejściowy obrazek/obrazki z pomocą biblioteki
libjpeg (w przypadku dekodowania PNG, skorzysta z
libpng).
Potem MEncoder kompresuje zdekodowane pliki podanym kompresorem
(DivX4, Xvid, ffmpeg msmpeg4, itd.).
Przykłady
Opis i sposób działania funkcji znajdują się na stronie man.
Tworzenie pliku DivX4 ze wszystkich plików JPEG w aktualnym katalogu:
mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o wyjscie.avi \*.jpg
Tworzenie pliku DivX4 z wybranych plików JPEG w aktualnym katalogu:
mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o wyjscie.aviramka001.jpg,ramka002.jpg
Tworzenie pliku Motion (ruchomego - przyp. tłum.) JPEG (MJPEG) ze wszystkich plików JPEG w aktualnym katalogu:
mencoder -mf on:w=800:h=600:fps=25 -ovc copy -o wyjscie.avi \*.jpg
Tworzenie nieskompresowanego pliku ze wszystkich plików PNG w aktualnym katalogu:
mencoder -mf on:w=800:h=600:fps=25:type=png -ovc raw -o output.avi \*.png
Szerokości musi być liczbą podzielną przez 4, takie są ograniczenia formatu RAW RGB AVI.
Tworzenie pliku Motion PNG (MPNG) ze wszystkich plików PNG w aktualnym katalogu:
mencoder -mf on:w=800:h=600:fps=25:type=png -ovc copy -o wyjscie.avi \*.png
Tworzenie pliku Motion TGA (MTGA) ze wszystkich plików TGA w aktualnym katalogu:
mencoder -mf on:w=800:h=600:fps=25:type=tga -ovc copy -o wyjscie.avi \*.tgaWyciąganie napisów z DVD do pliku VobsubMEncoder jest w stanie wyciągnąć napisy z DVD do pliku
w formacie Vobsub. Tworzy je para plików z rozszerzeniem
.idx i .sub, które są zazwyczaj spakowane do
pojedyńczego archiwum .rar.
MPlayer może je odtwarzać z opcjami
i .
Podajesz nazwę bazową (tzn. bez rozszerzenia .idx lub
.sub) pliku wyjściowego z
oraz indeks dla tego pliku przez .
Jeżeli źródłem nie jest, DVD powinieneś użyć opcji , aby
wskazać plik .ifo potrzebny do stworzenia pliku wynikowego
.idx.
Jeżeli źródłem nie jest DVD i nie masz pliku .ifo, będziesz musiał użyć opcji
, aby podać id języka, które będzie umieszczone w pliku
.idx.
Każde uruchomienie dołączy bierzące napisy, jeżeli pliki .idx
i .sub istnieją. Więc powinieneś je usunąć przed uruchomieniem.
Kopiowanie dwóch napisów z DVD podczas 3-przebiegowego kodowania
rm subtitles.idx subtitles.sub
mencoder dvd://1 -vobsubout napisy -vobsuboutindex 0 -sid 2 -o frameno.avi -ovc frameno
mencoder dvd://1 -oac copy -ovc divx4 -pass 1
mencoder dvd://1 -oac copy -ovc divx4 -pass 2 -vobsubout napisy -vobsuboutindex 1 -sid 5Kopiowanie francuskich napisów z pliku MPEG
rm napisy.idx napisy.sub
mencoder film.mpg -ifo film.ifo-vobsubout napisy -vobsuboutindex 0 -vobsuboutid fr -sid 1Utrzymywanie proporcji obrazu (aspect ratio)
Pliki DVD i SVCD (tzn. MPEG1/2) zawierają wartość proporcji obrazu, która
opisuje, jak odtwarzacz ma skalować strumień video, wiec ludzie nie bedą się męczyć (np.: 480x480 + 4:3 = 640x480).
Jednak przy kodowaniu plików AVI (DivX), musisz być świadom, że nagłowek AVI nie przechowuje
tej wartości. Przeskalowywanie jest obrzydliwe i czasochłonne, musi być jakiś lepszy sposób!
Jest
MPEG4 posiada unikalną cechę: strumień video może posiadać swoją wartość proporcji obrazu.
Tak, dokładnie jak pliki MPEG1/2 (DVD, SVCD) i H263. Niestety, nie ma
żadnych odtwarzaczy video które by wykorzystywały tą
zaletę MPEG4, oprócz MPlayera.
Właściwość ta może być jedynie używana z kodekiem mpeg4 z biblioteki libavcodec.
Pamiętaj: chociaż MPlayer poprawnie odtworzy stworzone pliki, inne odtwarzacze
użyją złych proporcji obrazu (aspect ratio).
Z pewnością powinieneś wyciąć czarne pasy nad i pod obrazem.
Zobacz jak używać filtrów cropdetect i crop na stronie man.
Sposób użycia:
mencoder przykład-svcd.mpg -ovc lavc -lavcopts vcodec=mpeg4:autoaspect -vf crop=714:548:0:14 -oac copy -o wyjscie.aviDowolne inter/intra matryce
Ta cecha libavcodec pozwala ustawić dowolne
inter (I-ramki/ramki kluczowe) i intra (P-ramki/predicted
frames) matryce. Funkcja ta jest obsługiwana przez wiele kodeków:
mpeg1video i mpeg2video
zgłaszane są jako działające.
Typowy sposób użycia tej opcji to ustawienie matrycy na specyfikacje preferowane przez
KVCD.
Matryca Kwantyzacji KVCD "Notch":
Intra:
8 9 12 22 26 27 29 34
9 10 14 26 27 29 34 37
12 14 18 27 29 34 37 38
22 26 27 31 36 37 38 40
26 27 29 36 39 38 40 48
27 29 34 37 38 40 48 58
29 34 37 38 40 48 58 69
34 37 38 40 48 58 69 79
Inter:
16 18 20 22 24 26 28 30
18 20 22 24 26 28 30 32
20 22 24 26 28 30 32 34
22 24 26 30 32 32 34 36
24 26 28 32 34 34 36 38
26 28 30 32 34 36 38 40
28 30 32 34 36 38 42 42
30 32 34 36 38 40 42 44
Sposób użycia:
$ mencoder wejscie.avi -o wyjscie.avi -oac copy -ovc lavc -lavcopts inter_matrix=...:intra_matrix=...
$ mencoder wejscie.avi -ovc lavc -lavcopts
vcodec=mpeg2video:intra_matrix=8,9,12,22,26,27,29,34,9,10,14,26,27,29,34,37,
12,14,18,27,29,34,37,38,22,26,27,31,36,37,38,40,26,27,29,36,39,38,40,48,27,
29,34,37,38,40,48,58,29,34,37,38,40,48,58,69,34,37,38,40,48,58,69,79
:inter_matrix=16,18,20,22,24,26,28,30,18,20,22,24,26,28,30,32,20,22,24,26,
28,30,32,34,22,24,26,30,32,32,34,36,24,26,28,32,34,34,36,38,26,28,30,32,34,
36,38,40,28,30,32,34,36,38,42,42,30,32,34,36,38,40,42,44 -oac copy -o svcd.mpg