Kodowanie z <application>MEncoderem</application> 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.avi Kodowanie 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.avi Pierwszy 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 kodowania 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 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.avi Kodowanie do formatu MPEG MEncoder 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 opcje media.avi -o wyjscie.mpg Przeskalowywanie 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.avi Kopiowanie strumienia MEncoder 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 <systemitem class="library">libavcodec</systemitem> libavcodec 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 kodekaOpis mjpeg 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 copy Kodowanie 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: MEncoder dekoduje 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.avi ramka001.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 \*.tga Wyciąganie napisów z DVD do pliku Vobsub MEncoder 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 5 Kopiowanie 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 Utrzymywanie 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.avi Dowolne 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 .