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 file/DVD -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=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, żeby 1.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 libavcodeclibavcodec umożliwia proste kodowanie do wielu
interesujących formatów video i audio.
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
Rippowanie DVD do wysokiej jakości pliku MPEG4 ("DivX")
Na ripowanie DVD do pliku MPEG4 (DivX) wysokiej jakości składa sie wiele czynników.
Poniżej znajduje się przykład tego procesu gdy nie ma żadnego rozmiaru docelowego
pliku końcowego (innego niż zmieszczenie rezultatu w 2GB).
Libavcodec zostanie użyte do zakodowania obrazu,
dźwięk natomiast będzie skopiowany bez zmian.
Kadrowanie
Odtwórz DVD i uruchom na nim filtr detekcji kadrowania ().
Rezultatem bedzie prostokąt kadrowania do użycia przy kodowaniu. Powodem kadrowania
jest to, że wiele filmów nie zostało nakręconych w standardowej dla DVD proporcji obrazu
(aspect ratio)(16/9 lub 4/3), lub, powodem może być cokolwiek,
obraz nie wypełnia poprawnie całej ramki. A więc chcesz wyciąć bezsensowne czarne
pasy podczas ripowania. To również poprawia jakość ripu w ponieważ kodowanie ostrych krawędzi
czarnych pasów zajmuje wiele bitów.
Powszechną proporcja obrazu jest 2.35, taka jak w kineskopie. Większość dużych filmów-pogromców bloków
ma własnie taką proporcje obrazu (aspect ratio).
Poziom jakość
Następną rzeczą jaką musisz ustalić to docelowy poziom jakości. Gdy nie ma potrzeby
zmieszczenia pliku na płycie/płytach CD, użycie stałej kwantyzacji znanej
również pod nazwą stałej jakości będzie dobrym wyborem. W ten sposób każda ramka
zajmuje tyle bitów ile potrzebuje aby zachować jakość na wybranym poziomie,
za to wielokrotne kodowanie nie jest w tym wypadku potrzebne. W
libavcodec, otrzymasz stałą jakość
używając opcji .
powinno dać końcowy rezultat poniżej 2GB, zależy to głównie
od długości filmu i poziomu szumów obrazu (im wiecej szumów tym trudniej jest dany obraz skompresować).
Pliki powyżej 2GB
Jeżeli plik wynikowy z kodowania o stałej jakości jest większy od 2GB
, będziesz musiał stworzyć indeks aby móc oglądać go poprawnie.
Albo
odtwórz film z opcją aby stworzyć index w locie albo
użyj aby zapisać indeks do pliku tylko raz i użyć go potem przy odtwarzaniu
pliku używając opcji .
Jeśli denerwuje Cię to, możesz chcieć utrzymać wielkość pliku poniżej 2GB.
Są trzy sposoby aby uniknąć tego. Możesz spróbować zakodować jeszcze raz używająć
i zobaczyć czy wielkość i jakość pliku wynikowego są
zadowalające. Możesz także spróbować
kodowania 2przebiegowego.
Gdy będziesz kopiował scieżkę dźwiękową automatycznie będziesz znał jej
bitrate, znasz także długość filmu, możesz więc obliczyć potrzebny bitrate
aby przekazać go opcji
bez używania kodowania 3przebieowego.
Trzecią i prawdopodobnie najlepszą opcją będzie lekkie zeskalowanie rozdzielczości.
Lekkie zmiękczenie obrazu i stracenie setali jest bardziej przyjazne dla oka niż
artefakty powodowane przez kompresję MPEG. Zeskalowywanie wydajnie redukuje szumy obrazy
,co jest dobre, ponieważ szumy się ciężko kompresuje.
Usuwanie przeplotu
Jeżeli film ma przeplot, możesz chcieć go zlikwidować podczas ripowania.
Jest to kwestia dyskusyjna czy usuwanie przeplotu powinno być robione
na tym etapie. Zaletą jest to że usuwanie przeplotu podczas konwertowania do
MPEG4 polepsza kompresje, ułatwia oglądanie które jest mniej zasobożerne na
monitorach komputerowych.
Czy usuwanie przeplotu na etapie ripowania jest dobrym pomysłem zależy od
DVD. Jeżeli DVD zostało zrobione z filmu nakręconego w prędkości 24 fps (przyp. tłum. ramek
na sekundę), możesz ze spokojem usunąć przeplot w czasie ripowania.
Jednakże jeśli prędkość orginlanego filmu wynosiła 50/60 fps, konwertowanie go
do video 23.976/25 fps bez przeplotu, nie będzie dobry pomysłem, ponieważ skutkiem
takiego procesu będzie strata informacji.
If you do decide to interlace, you can further
experiment with different deinterlacing filters. See
http://www.wieser-web.de/MPlayer/
for examples. A good starting point is .
Jeżeli naraz kadrujesz i usuwasz przeplot, to usuń przeplot
przed kadrowaniem. Aktualnie, nie jest to konieczne
gdy wertykalny offset kadrowania jest podzielny przez 2. Jednakże z innymi filtrami
,takimi jak dering, kadrowanie powinno być ostatnie, dlatego jest to dobrym
przyzwyczajeniem aby ustawiać kadrowanie jako ostatnie.
Odwrócone telecine
Jeśli ripujesz DVD w formacie PAL, które jest 25 fps, nie musisz myśleć o fps'ach
(ramkach na sekunde - przyp. tłum.). Użyj poprostu 25 fps. Z drugiej strony DVD w
formacie NTSC są 29.97 fps (zakrąglone zazwyczaj od 30 fps, ale to nie jest prawda).
Jeżeli film był nakręcony dla TV, znów nie musisz dotykać się do fps'ów.
Ale jeśli film został nakręcony na taśmie, pociąga to sa sobą, że miał
(dokładnie) 24 fps i zostal przekonwertowany podczas tworzenia DVD do 29.97 fps.
Konwersja, gdzie do każdej z 24 ramek filmu dodaje sie 12 pól, nazywa sie telecine.
Aby wiecej sie dowiedzieć o telecine zobacz
Wyniki szukania (Google) "telecine field 23.976".
W przypadku gdy masz takie ztelecinowane DVD, będziesz chciał
odwrócić telecine, tzn. konwertować film do 23.976 (29.97*4/5).
Inaczej panning kamery będzie wyglądał brzydko i głupio.
Do tego celu możesz użyć opcji .
Wszystko co jest pokazywane w kinach jest nakręcone na taśmie i potrzebuje
odwróconego telecine, programy telewizyjne natomiast nie.
Skalowanie i proporcje obrazu (aspect ratio)
Aby uzyskać najlepszą jakość nie skaluj podczas ripowania.
Zeskalowywanie w dół powoduje strate detali, a skalowanie w górę
skutkuje pojawieniem się artefaktów i zwiększa rozmiar pliku.
Piksele w filmach DVD nie są kwadratowe, a więc filmy DVD zawierają informacje
o poprawnej proporcji obrazu. Jest możliwe aby przechowywać tę informacje w
nagłówku wynikowego pliku MPEG4. Większość odtwarzaczy video ignoruje
tę informacje, ale MPlayer honoruje ją.
Więc jeśli zamierzasz używać tylko MPlayer
do odtwarzania zripowanego pliku, nie musisz skalować filmu, poprostu przekaż
opcję do
MEncodera i wszystko automagiczne będzie działać.
Jeśli musisz skalować, bądź ostrożny aby uzyskać poprawny rozmiar obrazu szczególnie gdy kadrujesz.
Podsumowanie
Podsumowując wszystko, dobrą kodującą komendą może być:
mencoder dvd://1 -aid 128 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vqscale=3:vhq:v4mv:trell:autoaspect \
-ofps 23.976 -vf crop=720:364:0:56 -o Harry_Potter_2.avi
wskazuje na tytuł DVD do zripowania. Opcja
mówi aby użyć 128ej scieżki audio, i
skopiować ją bez zmian. Będziesz musiał użyć
MPlayera aby znaleźć poprawne wartości do tych opcji.
Opcje do
poprawiają jakość vs. bitrate, ale przedłużąją kodowanie.
Szczególnie opcja zwalnia kodowanie znacząco ale też zauważalnie
poprawia jakość. Jeżeli chcesz usunąć przeplot dodaj filtr do
, na przykład:
(w takiej kolejności). Jeśli nie potrzebujesz
odwróconego telecine, zostaw .