Podstawy używania MEncodera
Pełna lista dostępnych opcji MEncodera oraz
przykłady znajdują się 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.
Wybieranie kodeka i formatu
Kodeki audio i video stosowane przy kodowaniu są wybierane odpowiednio
opcjami i .
Napisz na przykład:
mencoder -ovc help
by uzyskać listę wszystkich kodeków video obsługiwanych przez
MEncodera na Twoim komputerze.
Dostępne są następujące:
Kodeki audio:
Nazwa kodeka audioOpismp3lameKodowanie na MP3 VBR, ABR lub przy użyciu LAMElavcUżywa jednego z kodeków audio z libavcodecfaacKoder audio FAAC AACtoolameKoder MPEG Audio Layer 2twolameKoder MPEG Audio Layer 2 encoder oparty na tooLAMEpcmNieskompresowany dźwięk PCMcopyNie przekodowywuj, tylko przekopiuj zakodowane ramki
Kodeki video:
Nazwa kodeka videoOpislavcUżywa jednego z kodeków video z libavcodecxvidXviD, kodek MPEG-4 Advanced Simple Profile (ASP)x264x264, MPEG-4 Advanced Video Coding (AVC), zwany kodekiem H.264nuvnuppel video, używany przez niektóre aplikacje czasu rzeczywistegorawNieskompresowane klatki videocopyNie przekodowywuj, tylko przekopiuj zakodowane ramkiframenoUżywany do kodowania trójprzebiegowego (nie zalecane)
Format wyjściowy wybiera się opcją .
Napisz:
mencoder -of help
by otrzymać listę wszystkich formatów obsługiwanych przez
MEncodera na Twoim komputerze.
Formaty przechowywania:
Nazwa formatuOpislavfJeden z formatów obsługiwanych przez
libavformataviAudio-Video Interleaved (Przeplecione Audio-Video)mpegMPEG-1 i MPEG-2 PSrawvideosurowy strumień video (bez muxowania - tylko jeden strumień video)rawaudiosurowy strumień audio (bez muxowania - tylko jeden strumień audio)
Format AVI jest podstawowym formatem MEncodera,
co oznacza że jest najlepiej obsługiwany i że
MEncoder był projektowany z myślą o nim.
Jak napisano wcześniej, można używać innych formatów, ale możesz napotkać
przy tym problemy.
libavformat containers:
Jeśli chcesz żeby libavformat
dokonywał muksowania zbioru wyjściowego (przy użyciu opcji
), stosowny format zostanie ustalony na podstawie
rozszerzenia pliku wyjściowego.
Możesz wymusić konkretny format opcją biblioteki
libavformat.
libavformat container nameDescriptionmpgMPEG-1 i MPEG-2 PSasfAdvanced Streaming Format (Zaawansowany format strumieniowy)aviAudio-Video InterleavedwavWaveform AudioswfMacromedia FlashflvMacromedia Flash videormRealMediaauSUN AUnutOtwarty format NUT (eksperymentalny i jeszcze bez specyfikacji)movQuickTimemp4MPEG-4 formatdvformat Sony Digital Video
Jak widzisz, libavformat pozwala
MEncoderowi tworzyć sporą ilość różnych formatów.
Niestety, ponieważ MEncoder nie był tworzony
z myślą o innych formatach niż AVI, powinieneś popadać w paranoję na temat
wynikowych plików.
Dokładnie sprawdź czy jest prawidłowa synchronizacja audio/video i czy plik
może zostać prawidłowo odtworzony przez odtwarzacze inne niż
MPlayer.
Przykład:
Tworzenie zbioru Macromedia Flash video, nadającego się do odtwarzania
w przeglądarce sieci z wtyczką Macromedia Flash:
mencoder wejście.avi -o wyjście.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc \
-lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 \
-srate 22050
Wybieranie źródłowego zbioru lub urządzeniaMEncoder może kodoważ ze zbiorów lub bezpośrednio
z dysku DVD lub VCD.
Po prostu podaj nazwę zbioru w wierszu poleceń żeby kodować ze zbioru, albo
numertytułu lub
numerścieżki by nagrywać
z tytułu DVD albo ścieżki VCD.
Jeśli już skopiowałeś DVD na twardy dysk (możesz na przykład użyć narzędzia
takiego jak dvdbackup, dostępnego na większości
systemów), wciąż powinieneś używać składni , razem
z opcją po której następuje ścieżka do
skopiowanego DVD.
Opcji i możesz
też używać by podać własne ścieżki do węzłów urządzeń, jeśli domyślne
/dev/dvd i /dev/cdrom nie są
właściwe w Twoim systemie.
Przy kodowaniu z DVD, często pożądanym jest wybranie do kodowania rozdziału
lub zasięgu rozdziałów.
Możesz w tym celu użyć opcji , na przykład
1-4 zakoduje z DVD
tylko rozdziały od 1 do 4.
Jest to zwłaszcza użyteczne gdy robisz kodowanie do wielkości 1400 MB,
przeznaczone na 2 CD, ponieważ możesz się upewnić że przerwa nastąpi
dokładnie na granicy rozdziałów a nie w środku sceny.
Jeśli masz obsługiwaną kartę przechwytywania TV, możesz też kodować z jej
urządzenia wejściowego.
Użyj opcji numerkanału jako
nazwy pliku, a opcją skonfiguruj rozmaite ustawienia
przechwytywania.
Podobnie działa wejście z DVB.
Kodowanie dwuprzebiegowe MPEG-4 ("DivX")
Nazwa związana jest z faktem, iż 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 od
razu (możesz natomiast skasować plik AVI a jeszcze lepiej nie tworzyć go
w ogóle poprzez zapisywanie w /dev/null).
W drugim przebiegu przy pomocy danych o bitrate z plików tymczasowych tworzony
jest plik wyjściowy drugiego 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.
kopiowanie ścieżki dźwiękowej
Dwuprzebiegowe kodowanie DVD do MPEG-4 ("DivX") AVI z kopiowaniem ścieżki dźwiękowej.
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 -oac copy -o output.avikodowanie ścieżki dźwiękowej
Dwuprzebiegowe kodowanie DVD do MPEG-4 ("DivX") AVI z kodowaniem ścieżki dźwiękowej do MP3.
Uważaj stosując tę metodę, ponieważ w niektórych przypadkach może zaowocować
desynchronizacją audio/video.
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac mp3lame -lameopts vbr=3 -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 -oac mp3lame -lameopts vbr=3 -o output.aviKodowanie do formatu MPEGMEncoder może tworzyć pliki formatu MPEG (MPEG-PS).
Zazwyczaj, jeśli używasz filmu MPEG-1 albo MPEG-2, to jest tak ponieważ
kodujesz na ograniczony format, taki jak SVCD, VCD albo DVD.
Specyficzne ograniczenia tych formatów są wyjaśnione w
przewodniku tworzenia VCD i DVD.
Aby zmienić wyjściowy format plików MEncodera, użyj opcji .
Przykład:
mencoder wejscie.avi -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac copy inne_opcje -o wyjscie.mpg
Tworzenie pliku MPEG-1, który można odtworzyć na systemach z minimalną obsługą
multimedialną, taką jak domyślne instalacje Windows:
mencoder wejscie.avi -of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 -o wyjscie.mpg -oac lavc -ovc lavc \
-lavcopts acodec=mp2:abitrate=224:vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2:aspect=4/3
Wskazówka:
Jeżeli z jakiegoś powodu nie satysfakcjonuje cię jakość wideo
z drugiego przebiegu, możesz ponownie uruchomić kodowanie
swojego wideo z inną docelową szybkością transmisji (bitrate),
zakładając, że zapisałeś statystyki pliku z poprzedniego przebiegu.
Jest to możliwe, ponieważ głównym celem pliku ze statystykami jest
zapamiętanie złożoności każdej z ramek, co nie zależy zbyt mocno
od szybkości transmisji. Weź jednak pod uwagę, że uzyskasz najlepsze
wyniki, jeżeli wszystkie przebiegi będą uruchomione z nieróżniącymi
się za bardzo docelowymi szybkościami transmisji.
Przeskalowywanie filmów
Często zachodzi potrzeba zmiany wielkości obrazu. Powodów tego może być wiele:
zmniejszenie rozmiaru pliku, przepustowość sieci, itd. Większość ludzi stosuje
przeskalowywanie nawet przy konwertowaniu płyt DVD, SVCD do DivX AVI. Jeżeli
chcesz przeskalowywać, przeczytaj sekcję o zachowywaniu 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 2: bicubic.
Przykład:
mencoder wejscie.mpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -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 ):
można ładne rzeczy wyczyniać:) Jak wstawianie (nie konwertowanie) FLI, VIDO lub MPEG-1 video w plik AVI!
Oczywiście tylko MPlayer potrafi odtwarzać takie pliki :) I prawdopodobnie nie ma
dla tego żadnego sensownego zastosowania. Poważniej: kopiowanie strumieni video może być przydatne
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 w tym celu opcji
.
Używanie do kopiowania z jednego formatu
przechowywania do innego może wymagać użycia żeby
utrzymać znacznik formatu audio z oryginalnego zbioru.
Na przykład jeśli konwertujesz zbiór NSV z audio zakodowanym AAC do formatu
AVI, to znacznik formatu audio będzie nieprawidłowy i musi zostać zmieniony.
Listę znaczników formatów audio znajdziesz w pliku
codecs.conf.
Przykład:
mencoder wejście.nsv -oac copy -fafmttag 0x706D -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -o wyjście.aviKodowanie z wielu wejściowych plików obrazkowych (JPEG, PNG, TGA, SGI)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 MPEG-4 ze wszystkich plików JPEG w aktualnym katalogu:
mencoder mf://ramka001.jpg,ramka002.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o wyjście.avi
Tworzenie plików MPEG-4 z jawnie podanej listy plików JPEG (list.txt w aktualnym
katalogu, zawiera listę plików, które mają zostać użyte jako źródło, po jednym w każdej linii):
mencoder mf://@list.txt -mf w=800:h=600:fps=25:type=jpg \
-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o wyjscie.avi
Tworzenie pliku MPEG-4 z wybranych plików JPEG w aktualnym katalogu:
mencoder mf://klatka001.jpg,klatka002.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc -lavcopts vcodec=mpeg4 -oac copy -o wyjscie.avi
Tworzenie pliku Motion JPEG (MJPEG) ze wszystkich plików JPEG w aktualnym katalogu:
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc copy -ovc copy -o wyjście.avi
Tworzenie nieskompresowanego pliku ze wszystkich plików PNG w aktualnym katalogu:
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o output.aviInformacja:
Szerokość 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://*.png -mf w=800:h=600:fps=25:type=png -ovc copy -oac copy -o wyjscie.avi
Tworzenie pliku Motion TGA (MTGA) ze wszystkich plików TGA w aktualnym katalogu:
mencoder mf://*.tga -mf w=800:h=600:fps=25:type=tga -ovc copy -oac copy -o wyjscie.aviWydobywanie 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 opcją
oraz indeks dla tego pliku opcją .
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 do istniejących napisów, jeżeli pliki .idx
i .sub istnieją. Więc powinieneś je usunąć przed uruchomieniem.
Kopiowanie dwóch napisów z DVD podczas dwu-przebiegowego kodowania
rm subtitles.idx subtitles.sub
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -vobsubout subtitles -vobsuboutindex 0 -sid 2
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 -vobsubout subtitles -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 1 -nosound -ovc copyUtrzymywanie proporcji obrazu (aspect ratio)
Pliki DVD i SVCD (tzn. MPEG-1/2) zawierają informacje o proporcji obrazu, która
opisuje, jak odtwarzacz ma skalować strumień video, żeby ludzie nie byli jajogłowi
(np.: 480x480 + 4:3 = 640x480).
Jednak przy kodowaniu plików AVI (DivX) musisz być świadom, że nagłówek AVI nie przechowuje
tej wartości. Przeskalowywanie jest obrzydliwe i czasochłonne, musi być jakiś lepszy sposób!
Jest
MPEG-4 posiada unikalną cechę: strumień video może posiadać swoją wartość proporcji obrazu.
Tak, dokładnie jak pliki MPEG-1/2 (DVD, SVCD) i H.263. Niestety, istnieje tylko kilka
odtwarzaczy wideo, pomijając MPlayera, które
obsługują tą cechę MPEG-4.
Możliwość ta może być jedynie używana z kodekiem mpeg4
z biblioteki libavcodec.
Pamiętaj: chociaż MPlayer
poprawnie odtworzy stworzone pliki, inne odtwarzacze
mogą użyć 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ładowy-svcd.mpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect -vf crop=714:548:0:14 -oac copy -o wyjście.avi