DVD ripping a MPlayer / MEncoder

Na následujících řádcích se pokusím shrnout své zkušenosti při přetahování filmů z DVD na CD. V Linuxu jsem jen o něco více než BFU, takže místy to budu psát polopatě jako "pro blbečky" :o)
Původně jsem začínal s MPlayerem verze 0.90rcX. S příchodem verze 1.0preX se nám tochu změnila syntaxe, takže si dejte pozor, kterou verzi vlastně používáte. V textu na rozdíly upozorním.

MPlayer resp. MEncoder představuje poměrně komplexní nástroj pro DVD-ripping. Oproti tomu, s čím jsem se setkal na Windows platformě, je to stabilní, výkonný, jednoduchý a kompaktní nástroj. S jedou výjimkou - titulky. Tady shledávám zatím nedostižným win-soft SubRip (od verze 1.06). Už delší dobu však pracuju na vlastním programu (skript pro PERL), který by se tomuto vyrovnal alespoň co do funkčnosti.

Instalace

Instalací MPlayeru/MEncoderu se už zabývaly jiné články. Abych pravdu řekl, moc mi nepomohly :o) Trápil jsem se s tím tři večery za vydatné pomoci nejmenované osoby... Od té doby si MPlayer a potažmo MEncoder vždy kompiluju sám. Pokud jde o hardware, pak mám k dispozici Pentium4 1.8 GHz, 768MB RAM, HDD Seagate IV 120GB 7200 RPM s 8MB Cache a grafiku Matrox G550 DualHead.

Těm, kteří chtějí dostat ze svého počítače maximum, doporučuji MPlayer kompilovat. Rozdíl je opravdu znatelný zvláště na starších/slabších strojích.

Prozkoumání DVD

Nejdřív musíme zjistit, co vlastně chceme ripovat. DVD obvykle obsahuje více titulů, více pohledů, více zvukových stop, více titulků. K tomu použijeme MPlayer, např.:

 mplayer dvd://1 -aid 128 -sid 0
Parametry:
Změna syntaxe
verze 0.9verze 1.0
-dvd 1dvd://1

Mplayer pouštím zásadně z konzoly, takže se tam vypisuje spousta užitečných informací. Dá se rovnou zjistit, jakými audio, video stopami a titulky DVD film disponuje, ale já dávám přednost metodě systematického prohledávání :o) Pak jistě vidím a slyším, co budu ripovat. Občas narazíte na různé chuťovky, jako třeba u Tmavomodrého světa, který je sice v češtině, ale má pasáže v angličtině a němčině. Pak se musí vybrat ty správné české titulky - jedny tam jsou jen na cizojazyčné pasáže a druhé české běží pořád, i v česky mluvících sekvencích. Takže si vždycky prohlídněte film na více místech - nejlépe celý - předem :o)

Video-obraz

Většina DVD je uložena v rozlišení 720x576 pixelů. MPEG2 (DVD video formát) má schopnost uchovávat informaci o tzv. aspect ratio (AR), což je zjednodušeně poměr stran. Pro PAL/TV je to 4:3 (1.3333), jinou možností je "kino-formát" 16:9 (1.7777). S jinými hodnotami jsem se zatím nesetkal. V praxi to znamená, že pokud má film AR 1.3333, tak se obraz před zobrazením přepočítá na 768x576, pro 16:9 je to 1024x576. Mplayer to při přehrávání zajišťuje automaticky a korektně (dá se ovšem přinutit ke špatnému AR), MEncoder však zripuje video do formátu 720x576 a obraz bude deformovaný; přes přepínač -aspect 4:3 či -aspect 16:9 pak můžete pro AVI soubory MPlayeru napovědět správné AR, ale ve winech už budou lidi potit krev :o)

Jak si na tom příslušný DVD titul stojí s AR zjistíme z konzoly. Nad řádkem, na kterém běží aktuální pozice přehrávání a další informace, je celá řada údajů. Pro AR hledejte řádek s "aspect ratio" / "poměr stran" nebo VO: [xv] 720x576 => 768x576 (1,33:1) a tak podobně.

POZOR! Ačkoli to nebývá běžné, na některých DVD je obraz uložen v prokládané podobě - interlaced. Tak, jak to má ráda televize, takže se to na ní neprojeví, ale na počítači budete mít na monitoru obraz zubatý, zejména v rychlých pasážích. Setkáte se s tím zejména u DVD se záznamy z koncertů. Na to samozřejmě MPlayer a MEncoder pamatuje a máme tu volbu -vf lavcdeint. Viz Pár tipů ke konci článku.

Změna syntaxe - pozor na pořadí filtrů!
verze 0.9verze 1.0
-vop filtr2,filtr1-vf filtr1,filtr2

Audio-zvuk

Novější DVD tituly už mají audio ve více než dvou kanálech - Dolby Digital [Surround Sound] může mít až 5+1 kanálů. Pokud ale chceme převádět DVD na CD jako AVI video soubor, pak nejspíš ke kódování zvuku použijeme MP3 a ten zvládá standardně max. stereo - dva kanály. Některé z DVD titulů obsahují i stopu Dolby Stereo jako alternativu k Dolby Digital. Tato stopa je hlasitější a plnější při poslechu přes stereo soustavu, protože při stopě Surround Sound vám ve stereo aparatuře běží jen přední levý a pravý kanál (záleží, jak software "namixuje" surround do sterea).

Různé audio stopy si vyzkoušíme pomocí přepínače -aid 128 či -aid 129 atd. Po každém spuštění MPlayeru s tímto parametrem se jako vždy vygeneruje několik (dost) info řádků. Prohledejte je a najděte si ten, kde je něco jako AC3: 5.1 (3f+2r+lfe) nebo AC3: 2.0 (stereo) či AC3: 2.0 (dolby) atp. Jak jste jistě pochopili, číslo po AC3: oznamuje počet kanálů audia.

Pro ripování do AVI s MP3 chceme nejlépe stereo (nikoli surround). Je možné, že na starších DVD bude audio kódováno jinou technologií než AC3 (což je starší označení pro Dolby Digital). Přitom údaje u AUDIO: či AO: oznamují už formát výstupu, nikoli formát audia na DVD.

Titulky-obraz

Pro mnohé je dost překvapením, že titulky se na DVD uchovávají jako sled obrázků. Výrobce tak má plně pod kontrolou jejich vzhled, zjednodušuje se pak zobrazování i komplikovanějších fontů jako jsou např. čeština, azbuka, asijské jazyky atp. Pro ripování to ale může být kámen úrazu.

Nejdřív si zjistěte, zda a které titulky chcete: pomocí parametru -sid 0 či -sid 1 atd. Setkal jsem se i s tím, že 0 a 1 byly stejné titulky, stejně jako 2 a 3, 4 a 5 atd.

DVD ripping

Já osobně preferuji si nejdřív stáhnout celý DVD film na disk a pak si s ním hrát bez jakékoli další potřeby DVD disku či DVD mechaniky. Mplayer umí jednu hezkou věc a sice celý film se všemi zvukovými stopami a všemi titulky "nacpat" do jednoho souboru. Ten pak má asi 2-8 GB, podle velikosti filmu aj.

Jiné softy stahují na disk DVD do podoby mnoha .vob .ifo aj. souborů tak, jak jsou na DVD. MPlayer si hravě a automaticky poradí i s kódovanými-krypotovanými DVD tituly - ve Windows jsem musel používat jiný soft pro DVDripping/decrypting a pak další na převedení DVD videa na AVI video. A tady to máme v jednom balíčku :o) Takže zadáme:

  mplayer dvd://1 -dumpstream

a počkáme podle velikosti filmu a rychlosti počítače několik desítek minut. Moje mašina pracovala u 100min filmu asi 20minut. Výsledkem bude soubor stream.dump Pokud chcete konkrétní jméno souboru, pak připojte ještě:

  -dumpfile Jmeno_filmu.dumpstream

Jak vidíte, tak k tomuhle kroku nepotřebujete znát žádné aid či sid a já vlastně tímto krokem začínám. Pak můžu DVD disk vrátit do půjčovny a s dumpstreamem si hraju několik dní :o) Vždy pak jen místo dvd://1 zadáte Jmeno_filmu.dumpstream

Tip

  mplayer dvd://1 -dumpstream -dumpfile Film.dumpstream -v > Film.dumpinfo

Tento povel provede vydumpování filmu z DVD na disk a do souboru Film.dumpinfo uloží (pomocí > k přesměrování standardního výstupu) podrobné informace (přepínač -v je "upovídaný" režim MPlayeru) o struktuře DVD - počet a typ zvukových stop s čísly pro -aid, počet a kód titulků s čísly pro -sid a další.

DVD video encoding

Než spustím enkódování filmu, tak se ještě jednou přesvědčím, že vím, co všechno chci mít v AV souboru:

  mplayer Jmeno_filmu.dumpstream -aid 129 -sid 1

Kromě obrazu a zvuku se musíte také rozhodnout co s titulky - jestli je vložit napevno do filmu, nebo je chcete mít jako externí soubor - to asi bude preferovat většina z nás, protože pak se dá s titulky dále kouzlit a parametry pro titulky u MPlayeru jsou rozmanité - velikost, stínování, umístění kdekoli v obraze aj. Pokud je ale přece jen chcete mít ve filmu, pak to není žádná práce navíc. Jinak je musíme vyvést do externího souboru a pak ještě dále zpracovat.

VIDEO

Jakým kodekem chcete video enkódovat? Při jakém bitrate? V jaké kvalitě? Tohle si už musíte odzkoušet sami. Tady je pár tipů:

  -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=900:vme=1:vhq:keyint=25 \
  -vf scale=512:384

Parametry:

Z vlastní zkušenosti používám scale ke zmenšení, dosahuji při tom lepší kvality obrazu a zároveň tím i vyřeším problém s aspect ratiem. Přitom je třeba dávat pozor, aby MEncoder použil bicubic software scaling filter (bicubic precise či HQ bicubic) - ten má kvalitativně nejlepší výsledky, ale opět nám značně sníží rychlost enkódování. Zjistíme to opět z konzoly, kde i MEncoder vypisuje řadu informačních řádků. Zpravidla se použije implicitně. Pokud ne, lze jej vynutit pomocí -sws 2.

Jiný příklad, kdy enkóduju pomocí DivX4 (mpeg4) ve dvou průchodech (toto je první průchod - vpass=1)

  -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900:vme=1:vhq:vpass=1 \ 
  -vf scale=512:288

Při prvním průchodu u dvouprůchodového enkódování se vytváří jednak AVI soubor a jednak divx2pass.log soubor, ve kterém jsou informace o enkódovaném videu pro druhý průchod. Dosáhneme tak při stejném bitrate vyšší kvality než při normálním (jednoprůchodovém) enkódování. U druhého průchodu pak jen změníme parametr u vpass na vpass=2 a vše ostatní zůstane stejné. Specialitkou je pak tří průchodové (3-pass) enkódování, kdy v prvním kroku se nám do AVI souboru enkóduje pouze zvuk a druhý a třetí průchod pak zpracovávají video (dvouprůchodově). Zmatek? :o) Přečtěte si to ještě jednou. Příklad uvedu až na konci článku.

AUDIO

Platí tu obdobné co u videa - musíte se rozhodnout, v jaké kvalitě audio chcete. Například:

  -oac mp3lame -lameopts cbr:br=64:mode=3:aq=0:vol=2

Parametry:

Pro zajištění kompatibility přehrávání i ve Windows uvádím seznam kombinací bitrate a frekvencí, kterými disponuje ve Windows běžný mp3 audio kodek Fraunhofer Proffessional. Pro změnu frekvence na 22050 Hz připojíme k řádku parametr:

  -srate 22050

Frekvence u audio CD je 44100 Hz, DVD audio jde obvykle až na 48000 Hz. Pro úsporu místa lze z těchto hodnot značně slevit, frekvence 22050 Hz při bitrate 24 kBit je poslouchatelná, ale zvuk už začíná být "plechový" a nevhodný pro hudbu.

Titulky

Tady budu stručný. Pokud chcete titulky vložit přímo do obrazu, do videa, a tak se zbavit možnosti volby jejich zobrazení (v čemž je MPlayer silný), pak stačí k řádku mencoder přidat identifikační číslo titulků, které jste si předtím zjistili:

  -sid 2
Pokud ovšem chcete mít titulky v externím textovém souboru (.sub, .srt či jiném formátu), pak vás čeká ještě hodně práce. Touto problematikou se zabývám v rámci mojeho projektu pgm2srt. Jednou možností je (pro ty, kteří mají na počítači i Windows) pomocí řádku:
  mencoder Nazev_filmu.dumpstream -sid 2 -ovc frameno \
  -nosound -o /dev/null -vobsubout Nazev_titulku

si vytáhnout do souboru Nazev_titulku.sub a Nazev_titulku.idx titulky č.2 ve formátu vobsub. Tenhle formát (soubor Nazev_titulku.sub) umí krásně zpracovat pod Windows program SubRip (používal jsem verzi 1.06). Jak na to v Linuxu se dozvíte v sérii mých článků k tomuto tématu.

Parametry:

Pár tipů

Výsledné spojení parametrů pro video,audio a titulky může vypadat třeba takhle:

  mencoder Nazev_filmu.dumpstream -aid 129 -sid 3 \
    -o Nazev_filmu.avi -oac mp3lame -lameopts cbr:br=128:aq=0:vol=2 \
    -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=1500:vhq:vme=1 \
    -vf scale=384:288

Pro dvou průchodové enkódování:

  mencoder Nazev_filmu.dumpstream -aid 129 \
  -o Nazev_filmu.avi -oac mp3lame -lameopts cbr:br=128:aq=0:vol=2 \
  -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900:vhq:vme=1:vpass=1 \
  -vf scale=512:384
  
  mencoder Nazev_filmu.dumpstream -aid 129 
    -o Nazev_filmu.avi -oac mp3lame -lameopts cbr:br=128:aq=0:vol=2 \ 
    -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900:vhq:vme=1:vpass=2 \ 
    -vf scale=512:384

A pro tří průchodové enkódování:

  mencoder Nazev_filmu.dumpstream -aid 129 \
    -ovc frameno -o frameno.avi -oac mp3lame \
    -lameopts cbr:br=128:aq=0:vol=2
  
  mencoder Nazev_filmu.dumpstream -aid 129 \ 
    -o Nazev_filmu.avi -oac copy -ovc lavc \
    -lavcopts vcodec=mpeg4:vbitrate=920:vhq:vme=1:vpass=1 \
    -vf scale=512:288

  mencoder Nazev_filmu.dumpstream -aid 129 \
    -o Nazev_filmu.avi -oac copy -ovc lavc \
    -lavcopts vcodec=mpeg4:vbitrate=920:vhq:vme=1:vpass=2 \
    -vf scale=512:288

Odstranění prokládání aneb deinterlacing obrazu - starší parametr -vop požadoval video postprocesingové filtry oddělené čárkou a v opačném pořadí, tzn. že se nejdříve aplikoval filtr uvedený jako poslední. Od 1.0 verze používáme volbu -vf a v ní se už filtry uvádějí ve správném pořadí - podle příkladu níže se tedy nejprve odstraní prokládání a pak se obraz zmenší. Výsledek bude lepší, než kdybychom to udělali naopak.

  mencoder ....... -vf lavcdeint,scale=512:288 
Místo deinterlace filtru z lavc knihovny můžeme vyzkoušet alternativní -vf pp=lb linear blend deinterlace filtr. Osobně používám lavcdeint při enkódování DVD a pp=lb při
grabování z TV karty.

Rozdělení/ořezání filmu:

  mencoder Zdroj.avi -ss 0:10:0 -endpos 1:20:0 -oac copy -ovc copy -o Film.avi 
Spojení filmů - POZOR! musí být stejné audio bitrate, video bitrate a rozměr obrazu!!!:
  cat film1.avi film2.avi | mencoder - -oac copy -ovc copy -forceidx -o Film.avi

Zajímavé parametry:

Pokud máte problémy s češtinou při zobrazování textových titulků, pak zkuste parametr -subcp. Mi to nějak nechodilo a tak to řeším tak, že do adresáře /home/uživatel/.mplayer/font nakopíruju soubory (.desc a .raw) buď fontu ISO-8859-2 nebo CP1250 podle toho, v jakém jsou titulky. Fonty pro mplayer různých kódových stránek a různých velikostí jsou ke stažení jako archivy na homepage MPlayeru.

Snažil jsem se zvolenou problematiku popsat co nejsrozumitelněji :o) Na první pohled se to může zdát složité a těžkopádné, ale po dvou třech zripovaných DVD už ani nevzdechnete po klikacích grafických nástrojích :o))

Přeji hodně zdaru a radosti z výsledné vysoké kvality.


LINUX

malá ikona

Počítadlo z http://pocitadlo.netway.cz/