Příkazy fungují s MPlayer 1.0pre5–3.2.2 (oproti starším verzím se syntax mplayeru trochu liší). Mencoder je součástí MPlayer distribuce.
Předpokládám, že máte nainstalovány a při instalaci mplayeru aktivovány potřebné kodeky – alespoň lameMP3a DivX5. Dále device nebo symlink /dev/dvd vedoucí k DVD mechanice.
Používám tzv. 3-pass encoding. Protože se slovo pass používá i k odkazování na jednotlivé video-only průchody, budu používat slovo průchod k označení jednoho ze tří průchodů (audio->video 1st pass->video 2nd pass) a pass k označení jednoho ze dvou video-only passů. Tříprůchodový encoding znamená, že na první průchod komprimuji audio, na druhý 1st-pass video, na třetí 2nd-pass video. Výhoda spočívá hlavně v možnosti přesně nastavit bitrate videa (aby se vešlo na vybrané médium), jakmile víme velikost audia (což se při VBR těžko předem odhaduje). Sekundární výhoda je, že když systém během ripování spadne, nemusíme již dokončené průchody opakovat (toto ovšem většinou na GNU/Linuxu není problém). Mnou uvedené příkazy v tomto článku berou data rovnou z DVD disku; pokud to někomu nevyhovuje, může si film nejdříve zkopírovat na pevný disk a ke všem příkazům přidat
-dvd-device /cesta/k/VOBům
0. Vybrat si, který title z DVD ripovat.
mplayer -v dvd://k
kde k je číslo title (v příkladech používám číslo 1). Díky -v (verbose) hned zjistíte, jaké jazyky a titulky jsou na disku, a jejich příslušné ID.
1. První průchod: Audio
Po skončení tohoto průchodu bude v aktuálním adresáři soubor frameno.avi, který obsahuje pouze audio data a na konci se spojí se souborem obsahujícím pouze video data získaným během druhého a třetího kroku.
Nejdříve se ujistíme, že před startem neexistuje soubor frameno.avi
rm frameno.avi
a spustíme samotnou audio komprimaci
mencoder dvd://1 -ovc frameno -oac mp3lame -lameopts abr:br=112:aq=0:mode=1 -o frameno.avi
-ovc určuje video kodek, seznam získáte pomocí mencoder -ovc help, v tomto případě je použito „frameno“ pro vytvoření speciálního audio-only souboru, -oac určuje audio kodek, zde LameMP3.
Pomocí -lameopts se definují parametry LameMP3:
Ve výše uvedeném příkazu je použito abr (average bitrate – komprimuje do variabilního bitratu, ale snaží se udržet průměrný bitrate na uvedené hodnotě – v tomto případě 112 kbps). Místo abr lze použít cbr (constant bitrate) – zbytečné, pokud nehodláte avi dále editovat. Při editaci avi s variabilním audio bitratem jsou problémy se synchronizací audia-videa. Třetí možnost je vbr (variable bitrate), kde není předem zaručen žádný konktrétní bitrate a místo parametru br= se udává kvalita q=k, kde k je celé číslo z intervalu od 0 (nejvyšší) do 9 (nejnižší). Hlavně kvůli vbr používáme tříprůchodový rip. Po dokončení audio komprese mencoder vypíše doporučené bitraty pro různá cílová média. V kroku 2. a 3. doporučuji nastavit vbitrate= na o něco nižsí hodnotu, než mencoder doporučuje (radši si to spočítejte sami – od kapacity média odečtěte velikost frameno.avi a řekněme 5–10 megabytů a vydělte délkou filmu). Zdá se totiž, že mencoder nepočítá s patičkou avi souvoru, která v případě dvouhodinového filmu může přidat až deset megabytů.
aq= (algorithmic quality) udává kvalitu a rychlost komprese: celé číslo od 0 (nejvyšší kvalita) do 9 (nejnižší kvalita)
mode=
možnosti jsou:
0 stereo 1 joint-stereo 2 dualchannel 3 mono
-o určuje výstupní soubor, pro následující kroky je nutné, aby se jmenoval frameno.avi
2. Druhý průchod: 1st-pass video
Nyní máme v aktuálním adresáři soubor frameno.avi s hotovým audiem a máme spočítaný bitrate pro video. Jdeme udělat first-pass videa.
mencoder dvd://1 -vf pp=lb:c,scale=800:340,crop=784:240 -zoom -ovc lavc lavcopts vcodec=mpeg4:vbitrate=700:v4mv:vhq=4:vpass=1 -oac copy -sws 2 -o film.avi
Za -vf následují video filtry:
- pp
- Deinterlacing
- scale
- Nastavení rozlišení, potažmo poměru stran.
- crop
- Pro oříznutí černých pruhů. Hodnoty crop = výsledné rozlišení videa. V tomto případě mencoder ořízne 8 pixelů zprava i zleva a 50 pixelů zeshora i zezdola (defaultně se ořezává symetricky ze středu videa). Pro nalezení optimálních hodnot můžete použít buď pokus-omyl na kousku vyripovaného videa (přerušit konverzi Control-C a otevřít avi), video filtr cropdetect (snaží se automaticky najít zbytečné okraje), nebo video filtr rectangle, který vykresluje čáry v místě potenciálního oříznutí. Detaily v man mencoder.
argument -zoom je nutný, aby se provedlo softwarové scalování (parametr scale=)
-ovc nastavuje video kodek. U mě jsou možnosti:
- raw
- uncompressed video. Use fourcc option to set format explicitly.
- nuv
- nuppel video
- divx4
- divx4linux/divx5linux library (depends on configuration)
- lavc
- libavcodec codecs – best quality!
- vfw
- VfW DLLs, currently only AVID is supported.
- qtvideo
- QuickTime DLLs, currently only SVQ1/3 are supported.
- xvid
- XviD encoding
Používám lavc s parametry lavcopts.
- vcodec=mpeg4
- enkódujeme s DivX 4/5 (záleží na tom, co máte nainstalováno)
- vbitrate=700
- průměrný video bitrate nastaven na 700 kbps (dosaďte vámi spočítanou hodnotu)
- v4mv
- přesnější předpovídání pohybu – o něco lepší kvalita
- vhq=4
- nejvyšší kvalita enkódování (0 je nejnižší kvalita)
- vpass=1
- jedeme první video pass
- -oac copy
- audio pouze kopírujeme z frameno.avi (který mencoder hledá v aktuálním adresáři)
- -sws 2
- nastavuje kvalitu/rychlost softwarového scalování, v tomto případě bicubic
- -o
- jméno výstupního souboru
3. Třetí průchod: 2nd-pass video
Máme hotový soubor film.avi. Pokud jste spokojeni s jeho kvalitou, můžete zde skončit. Pokud budete pokračovat, v tomto posledním kroku-průchodu uděláme druhý pass videa. V aktuálním adresáři byste měli mít soubor divx2pass.log vytvořený v minulém kroku, který obsahuje informace nutné k provedení druhého passu.
mencoder dvd://1 -vf pp=lb:c,scale=800:340,crop=784:240 -zoom -ovc lavc lavcopts vcodec=mpeg4:vbitrate=700:v4mv:vhq=4:vpass=2 -oac copy -sws 2 -o film.avi
Vše nezměněno oproti kroku 2, až na vpass=2.
4. Konec
Po dokončení třetího průchodu máme soubor film.avi, kde je video enkódováno v DivXu a audio v MP3.
5. Poznámky na závěr
Rychlost:
Na mém AthlonXP@1900+ Mhz, 512 MB RAM trvá ripování filmu zhruba dvojnásobek jeho délky. Doporučuji se po odladění outputu přepnout např. do runlevelu 3, aby desktop a Xka zbytečně nebraly tiky. Na druhou stranu pokud chcete během ripování s počítačem pracovat, můžete nastavit pomoci příkazu `nice' mencoderu nižsí prioritu.
Ripování různých audio kanálů:
Stačí v prvním průchodu přidat argument -aid k, kde k je celé číslo >=133 Seznam audio kanálů uvidíte, když spustíte mplayer s argumentem -v (mplayer -v dvd://1). Můžete jich naripovat několik, vyextrahovat z frameno.avi jako .mp3 soubor a pak pomocí mplayer -audiofile audio.mp3 film.avi vybírat, který kanál chcete slyšet.
Ripování pouze části filmu:
Pro omezení zleva -ss 00:20:10, pro omezení zprava -endpos 01:20:10. -endpos lze zadat i jako velikost (-endpos 700mb), což se hodí, když se film nevejde na CD o pár magabytů a titulky lze oželet. Použijte
mencoder -oac copy -ovc copy -endpos 700mb film.avi -o film_700mb.avi
Takto lze zkracovat i filmy s variabilním audio bitratem bez rozhození a-v syncu. Mencoder opět nepočítá s AVI patičkou.
Výstupní framerate:
Argumentem -ofps se nastavuje framerate avi souboru. Čím nižší hodnota, tím rychlejší ripování a kvalitnější jednotlivé framy, ale větší trhanost. Osobně považuji hodnoty >25 za zbytečné, na některé typy filmů mi stačí 18 fps.
Pokud -ofps použijete, nelekejte se neustálého vypisování skipping frame a přepněte se do jiné konzole, ať vykreslování hlášek nezdržuje ripování.
Hraní si s parametry video kodeku:
Mezi -lavcopts obvykle přidávám následující osvedčené hodnoty:
vlelim=-4:vcelim=9:lumi_mask=0.01:dark_mask=0.01:vqcomp=0.8:vqmin=2:vqmax=31
Takže příkaz vypadá:
mencoder dvd://1 -vf pp=lb:c, scale=800:340, crop=784:240 -zoom -ovc lavc -lavcopts vcodec=mpeg4: vbitrate=700: v4mv: vhq=4: vpass=1: vlelim=-4: vcelim=9: lumi_mask=0.01: dark_mask=0.01: vqcomp=0.8: vqmin=2: vqmax=31 -oac copy -sws 2 -o film.avi
(Pozn. red: mezery za dvojtečky přidány kvůli sazbě –Johanka)
Druhý pass to samé, až na vpass=2.