CIV:Ripování DVD

Z HelpDesk

aneb: Jak dostat obsah DVD do AVI?

Úvod

Byť to nemusí plně souviset s vizí či misí CIVu, chtěl bych zde publikovat krátký návod na ripování obsahu DVD. Postup je odzkoušen na velmi pěkné sérii The Michael Palin Collection, jejímž je CIV vlastníkem a již jsme pořídili pro potřebu procvičování angličtiny. Jde o návod velmi jednoduchý. Až si někdo přinesete multi-angle DVD, tak s ním asi nepochodíte. Ale prozatím bude stačit.

Všechny použité nástroje jsou open-source, ke zpracování videa se používá výhradně populární mencoder (nainstalujete si ho s mplayerem).

Ripování videa

Návod k ripování videa bude v podstatě postaven na jednoduchém příkladu. Na DVD bývá uloženo několik obrazových stop, obvykle film (nebo několik dílů seriálu) a nějaké doprovodné materiály, znělky apod. Každý takový kus, který je určen k nepřerušenému přehrávání, se nazývá titul (title).

Seznam titulů zjistíte třeba mplayerem. Potřebujete-li víc informací, můžete zkusit třeba:

mplayer dvd:// -identify -vo null -ao null

Výstup bude sice trochu nepřehledný, ale seznam (a délky) titulů, seznam titulků i zvukových stop apod. z něj vyčtete. Některé stopy budou extrémně krátké (třeba jen pár obrazových políček), ty vás nebudou zajímat. Chcete-li z DVD vybrat jen jeden konkrétní titul, budete si jej muset v mplayeru přehrát, abyste se ujistili, že je to ten správný.

Pak už je postup jednoduchý. Dejme tomu, že chceme ripnout titul č. 4, výsledek uložit do souboru Video4.avi a posléze překódovat do Video4_final.avi. Chceme kódovat ve dvou průchodech, abychom dosáhli lepší kvality:

mencoder dvd://4 -ovc copy -alang en -oac copy -o Video4.avi
mencoder Video4.avi -o Video4_final.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -vf scale=-2:420
mencoder Video4.avi -o Video4_final.avi -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=1200 -vf scale=-2:420

dvd://4 určuje titul č. 4. -alang en určuje zvukovou stopu, kterou chcete dostat. Transkódovat se bude do MPEG4, zvuk se překóduje do MP3. Za všimnutí stojí parametr -vf scale=-2:420, který video zmenší tak, že výška bude 420 pixelů a šířka se dopočítá podle originálu. Výška se dá libovolně měnit, ostatní hodnoty si distudujete v manuálu. Když se parametr vynechá úplně, zachová se rozlišení DVD (což může některým přehrávačům v případě širokoúhlého obrazu dělat trochu prblém). vbitrate=1200 určuje množství dat na jednotku času. Tohle nastavení vám dá mírně nadprůměrný výsledek (celý film zhruba na 2 CD). Hodnota se dá libovolně upravovat a pokud se napíše záporná, měla by se použít jako požadovaná velikost celého výsledného souboru.

Jdete-li na kvalitu, můžete přidat další průchody, které video zkvalitní. Následující příkaz (třetí průchod) se dá pouštět pořád dokola, jen se musí nechat vždycky doběhnout, jinak budete moci začít od začátku.

mencoder Video4.avi -o Video4_final.avi -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vpass=3:vbitrate=1200 -vf scale=-2:420

No a to je všechno. Máte výsledný Video4_final.avi.

Ripování titulků

S titulky je mnohem větší legrace. Na DVD jsou uložené ve formátu VOB, což je formát grafický, takže titulky nejsou na DVD jako text a musí se prohnat přes OCR (a nejlépe také přes spellchecker), abyste z nich dostali něco smysluplného.

K dosažení výsledného efektu se použije několik nástrojů:

  • tccat pro ripnutí stopy
  • tcextract pro extrakci konkrétních titulků
  • subtitle2pgm pro převod titulků na obrázky ve formátu PGM
  • pgm2txt, což je wrapper, který na dostupné PGM volá gocr a vyrábí textové soubory s příponou .srtx
  • srttool nakonec z mnoha souborů .srtx udělá jeden výsledný .srt

V Debianu to znamená nainstalovat balíčky transcode a subtitleripper.

Celý postup tedy vypadá asi takto:

tccat -i /dev/sr0 -T 4 -L | tcextract -x ps1 -t vob -a 0x20 > subs-en
subtitle2pgm -o english -c 255,255,0,255 < subs-en
pgm2txt english
srttool -s -w < english.srtx > Video4_final.srt

Parametr -T 4 pro tccat určuje 4. titul. Parametr -a 0x20 je ID titulků, které chcete. Je to vždy 0x20 + číslo titulků, tj. pro titulkovou stopu č. 0 to bude 0x20, pro stopu č. 1 to bude 0x21 atd.

V průběhu práce se vás OCR může zeptat na znaky, kterým nerozumí:

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,OO,,,,,,,,,,,.................####,,,,,,,,,,,,,,,,OO,,,,,,, -
,,,,,,,,,,,,OO,,,,,,,,,,,................#####,,,,,,,,,,,,,,,,OO,,,,,,,<
,,,,,,,,,,,,OO,,,,,,,,,,,...............##....,,,,,,,,,,,,,,,,OO,,,,,,,
,,,,,,,,,,,OO,,,,,,,,,,,,..............##.....,,,,,,,,,,,,,,,OO,,,,,,,,
,,,,,,,,,,,OO,,,,,,,,,,,,..............##.....,,,,,,,,,,,,,,,OO,,,,,,,,
,,,,,,,,,,,OO,,,,,,,,,,,,.............####....,,,,,,,,,,,,,,,OO,,,,,,,,
,,,,OOOOO,OO,,,,,,OOOOO,,....##..###########..OO,,,,,,OO,,,,OO,,,,,,,,,<
,,,OOOOOOOOO,,,,,OOOOOOO,....###############..OO,,,,,,OO,,,,OO,,,,,,,,,
,,OO,,,,OOOO,,,,OO,,,OOO,....###..#...##......OO,,,,,,OO,,,,OO,,,,,,,,,
,OO,,,,,,OO,,,,OO,,,,,OOO...##.......##......#O,,,,,,OO,,,,OO,,,,,,,,,,
OO,,,,,,,OO,,,OO,,,,,,OO,...##.......##......#O,,,,,,OO,,,,OO,,,,,,,,,,
OO,,,,,,,OO,,,OOOOOOOOOO,...##.......##......#O,,,,,,OO,,,,OO,,,,,,,,,,
O,,,,,,,OO,,,OOOOOOOOOOO,..##.......##......##,,,,,,OO,,,,OO,,,,,,,,,,,
O,,,,,,,OO,,,OO,,,,,,,,,,..##.......##......##,,,,,,OO,,,,OO,,,,,,,,,,,
O,,,,,,,OO,,,OO,,,,,,,,,,..##.......##......##,,,,,,OO,,,,OO,,,,,,,,,,,
O,,,,,,OO,,,,OO,,,,,,,,,,.##.......##......##.,,,,,OO,,,,OO,,,,,,,,,,,,
O,,,,,OOO,,,,OO,,,,,OO,,,.##.......##......##.,,,,OOO,,,,OO,,,,,,,,,,,,
OOOOOOOOO,,,,OOOOOOOOO,,,.##.......##......###OOOOOOO,,,,OOOOO,,,,,,,,,
OOOOO,OO,,,,,,OOOOO,,,,,,##.......##........##OOO,OO,,,,,,OOOO,,,,,,,,,<-
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,<
The upper pattern was not recognized.
Enter correct UTF-8 char or string for it:

Znaky, s nimiž potřebuje pomoci, jsou vyznačené znakem #. Problémy jsou především se slitky, ale stačí jednou naučit.