CIV:Ripování DVD
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.