DVD titulky do TXT – jak na to?

Převod titulků z DVD do textové podoby

Tato záležitost představuje nejpracnější část převodu filmu z DVD na CD, alespoň co se Linuxu týče. Jak jsem psal už dříve,tak titulky jsou na DVD uloženy společně s videem a audiem a sice jako obrázky (což je velmi praktické – nenastávají potížes fonty, zejm. těmi problematickými jako jsou čeština, azbuka, asijské jazyky atp.).

Pokud máte na počítači nainstalován vedle Linuxu taky MS Windows, pak si můžete trochu usnadnit práci – přečtěte sisekci DVD-Linux-Windows-TXT titulky na konci tohoto článku.

Nejdříve si připravíme potřebný software. Budeme potřebovat:

tcextract

Tenhle prográmek je součástí balíčku transcode. Jedním ze způsobů jak zjistit, jestli ho máme nainstalovanýa jakou verzi, je v konzoli zadat

  rpm -qa | grep transcode

nebo prostě man transcode. tcextract slouží k extrakci požadovaného proudu (stopy)z multimediálního souboru. V našem případě nám vytáhne z DVD filmu požadované titulky.
Transcode je rychlý, všestranný, na příkazové řádce založený audio/video konvertor (převaděč) ze všeho do všeho a je součástíkaždé novější distribuce. Pokud ho přece jen nemáte, nainstalujte si ho (kvůli tcextract popř. i tccat).

subtitle2pgm

Zdrojový kód tohoto programu je součástí zdrojového balíčku transcode a najdete ho tam v podadresáři /contrib/subrip/. Zdese přesuňte a zadejte make. Z výsledku budeme potřebovat jen subtitle2pgm.
Program převádí vstupní soubor formátu z tcextract na posloupnost obrázků formátu pgm, které obsahujíčernobílé titulky.

dvdsub

Tenhle program nám pro naše účely plnohodnotně nahradí GOCR (GNU Optical Character Recognition). Ba co víc, tím,že si ho Martin Kačer napsal právě pro účely převodu titulků z DVD do textové podoby, je sice úzce zaměřenýna jedinou činnost, zato ale pracuje daleko spolehlivěji než GOCR a hlavně bez problémů zvládá češtinu. Programvyužívá toho, že všechna stejná písmenka vypadají v DVD titulcích naprosto stejně (italics/kurzíva, velká písmenaa malá písmena však představují samostatné znakové sady). Program se postupně ptá na jednotlivě rozpoznané znaky,jejich přiřazení si v průběhu jednoho zpracování pamatuje. Programu tak musíme říct, jaké znaky reprezentuje cca 100postupně rozpoznaných vzorků (3*26 + číslice + další znaky + slitá písmena zejm. u kurzívy).
Software získáte ze stránky projektu (projekt se původnějmenoval DVDtit, ale jeho současný oficiální název je DVDSub). Nebo vám jeho rannou (ale plně dostačující) verzi můžu zaslat mailem – je to v podstatě jeden soubor (zdroják programu v Céčku)v tar.gzip archivu o velikosti 7kB. Po jeho rozbalení (tar xfvz dvdtit.tgz) zadáte jen

  gcc dvdtit.c -o dvdsub

pro zkompilování a výsledný program se bude jmenovat dvdsub

Jdeme na to…

V prvním kroku musíme z DVD videa vytáhnout odpovídající stopu příslušných titulků (zde odkazuji namůj předchozí článek o ripování z DVD přes MPlayer/MEncoder).K tomu využijeme tcextract. Pokud jste si už video stáhli (dekryptovali)z DVD na disk přes

  mplayer -dvd 1 -dumpstream -dumpfile Jmeno_filmu.dumpstream

tak zadejte

  tcextract -i Jmeno_filmu.dumpstream -x ps1 \    -a 0x2? > Jmeno_filmu.titulky

Parametry:

  • ? je číslo vámi vybraných titulků z parametru -sid MPlayeru (0 nebo 1 nebo 2 atd.)
  • -x ps1 – definuje pseudo-kodek požadovaného proudu/stopy (ps1 pro MPEG private stream – titulky)
  • -a 0x20 – specifikuje, která multimediální stopa se má ze zdrojového souboru extrahovat (0x2? pro titulky (0x20 pro titulky č.0))
  • > Jmeno_filmu.titulky – přesměruje výstup do souboru Jmeno_filmu.titulky

Pokud chcete vytáhnout titulky přímo z DVD disku, pak použijte rouru

  tccat -i /dev/dvd -T 1 -L | tcextract -x ps1 -t vob \    -a 0x2? > Jmeno_filmu.titulky

Parametry:

  • tccat – program z balíčku transcode sloužící ke čtení a zřetězení multimediálních segmentovaných souborů (zřejmě i obsahuje/volá algoritmy k dekryptování DVD disků)
  • -i /dev/dvd – specifikuje vstupní zařízení (DVD-ROM)
  • -T 1 – specifikuje číslo titulu (title 1), který se má číst
  • -L – říká, že se mají postupně číst všechny kapitoly specifikovaného titulu
  • -t vob – specifikuje formát vstupního souboru
  • ? je číslo vámi vybraných titulků z parametru -sid MPlayeru (0 nebo 1 nebo 2 atd.)

Výsledný soubor Jmeno_filmu.titulky bude mít několik MB (1-5 podle rozsahu titulků). Doporučuji vytvořit nový adresář a do nějtento soubor přesunout společně s programy subtitle2pgm a dvdsub. Nyní přistoupíme k převedení ‘titulkového proudu’na sekvenci obrázků pro následné optické rozpoznávání textu:

  ./subtitle2pgm -i Jmeno_filmu.titulky -o titulky -c 255,0,0,255 -C 5

Nejdřív trošku teorie :o) Pokud se nemýlím, tak v DVD titulcích jsou povoleny 4 barvy – odstíny šedé. To umožňuje, aby bylytitulky vyhlazenější s obrysy jiného odstínu (v MPlayeru navíc mají lehký nádech pozadí, na němž jsou umístěny , takže titulkyv něm je opravdu radost číst :-). Pro co nejspolehlivější optické rozpoznání textu potřebujeme co možná nejvýraznější textv grafické podobě. Nahradíme tedy některé odstíny šedi černou, jiné bílou. I tohle umí subtitle2pgm.

Parametry:

  • ./ – pro úplné začátečníky připomenu, že takto se spouštějí všechny programy (resp. spustitelné soubory), které nejsou v prohledávaných adresářích
  • -i Jmeno_filmu.titulky – specifikuje vstupní soubor s titulky; upozorňuju, že subtitle2pgm striktně vyžaduje vstup vygenerovaný “modulem” tcextract z balíčku Transcode
  • -o titulky – určuje základ názvu výstupních souborů; první titulek bude titulky0001.pgm, další titulky0002.pgm atd. + titulky.srtx
  • -c 255,0,0,255 – velmi důležitý/klíčový parametr, jež určuje, který odstín šedé bude v titulcích nahrazen bílou či černou. Od něj se odvíjí kvalita grafických titulků coby vstupu pro OCR (Optical Character Recognition) software (v našem případě pro dvdsub). Tady budete muset trošku experimentovat. Číslo 255 znamená bílou barvu, 0 černou. U titulků k DVD Harry Potter a kámen mudrců jsem použil kombinaci 255,0,0,255, ale jak později uvidíme, lepší by byla zřejmě varianta 255,255,0,255. Na následujících obrázcích vidíte výsledky různých kombinací. Zdálo by se tak, že parametr -c má následující strukturu: vnější_obrys,vnitřní_obrys,střed,pozadí. Ale mezi různými DVD se to může lišit, nespoléhejte na to, ale jako vodítko to použít lze. Ne všechny titulky používají všechny čtyři barvy, často vypadává užití položky vnitřní_obrys – a» už pak na jeho místo dáte 0 nebo 255, výsledek je stejný.
  • -C 5 – nastaví vnější okraj kolem rozpoznaných titulků na 5 bodů; některé titulky jsou na DVD uloženy jako celé stránky s trochou grafiky-textu dole; nastavením menšího okraje ušetříme místo na disku a snad i maličko zrychlíme práci OCR softwaru; nebojte se, že by došlo k vynechání něčeho podstatného

Výsledkem tohoto kroku budou stovky souborů titulkyXXXX.pgm, třeba i 1500, tak se nelekněte. Proto doporučuju pracovat v samostatném adresáři. Jedenze souborů bude titulky.srtx – ten je velmi důležitý, obsahuje totiž časování titulků, resp. zat

10 komentářů

  1. KejPi | 30.04.2003 | 12:58 | Odpovědět

    Opravdu skvely clanek. DIKY Zacinam uvazovat o koupim DVDrom, abych si to mohl vyzkouset v praxi :))))

  2. hanus | 30.04.2003 | 14:12 | Odpovědět

    :o) Hlavně si nezapomeňte zkontrolovat a nastavit na hardu i DVD-ROM funkční DMA, abyste si to pak neznechucovali jako já na začátku tou dlouhou dobou čekání při stahování dat z DVD. Teď mi to jede 4,5MB/sec, takže ripnout DVD na disk je otázka 15-20min. Zdar!

  3. Anonym | 03.05.2003 | 00:06 | Odpovědět

    DD,
    vytecne pripraveny clanek… take dekuji, jen mi dovolte jeste jeden dotaz:
    narazil jsem na program DVD::RIP, ma smysl se jim zabyvat?
    Zatim jsem na nej koukal jen zbezne, ale zda se ze by Vas navod v nekterych mistech znacne zjednodusil, a navic je soucasti MDK91GPL (resp. bonus CD).
    Vas nazor?
    PJ

  4. hanus | 03.05.2003 | 16:06 | Odpovědět

    Zdravím, o programu DVD-rip jsem zaslechl,ale ještě jsem se nedostal k tomu, abych si ho nainstaloval a odzkoušel. Bude to možná jednodušší alternativa k výše popsanému postupu včetně ripování DVD přes MPlayer. Chystám se časem oba postupy porovnat, pokud to někdo neudělá dřív. MPlayer používám jako přehrávač a když umí i dekryptovat DVD a enkódovat, nehledal jsem zatím jiné nástroje. Jen ten OCR software (zatím?) neobsahuje. Díky za podnět.

  5. Michal Karas | 04.05.2003 | 19:46 | Odpovědět

    Take se priklanim k pochvale. Moc pekne clanky. Skoro bych az rekl, ze je mi lito, ze jsou na tomto webu. Ne ze by web nebyl pekny, ba naopak, moc se mi libi, ale ruku na srdce, kdo krome par mandrakistu (a me :)) sem zavita?

    U programu SubRip jste se zminil, ze je napsany v Delphi a je pod licenci GPL. Sice se moc o Delphi/Kylix nezajimam, ale neni to prave Borland, kdo vsude machruje jak je to vzajemne kompatibilni? Nejde ten program rozjet i pod Linuxem?

  6. hanus | 05.05.2003 | 11:45 | Odpovědět

    ad Mandrake: články jsem nepsal pro získání nehynoucí slávy, ale protože jsem se tomuhle tématu sám věnoval a mám takovou pedagogickou povahu :o) takže jsem se chtěl s ostatníma podělit o poznatky a snad jim i pomoct, ušetřit čas a přitáhnout je víc k Linuxu.
    ad SubRip: kontaktoval jsem člověka, který má teď projekt na starosti, náhodou je to Čech. Možná když ho bude “otravovat” víc lidí,
    že se rozhodně projekt zprovoznit i pro GNU/Linux. Výsek z jeho odpovědi:

    > A ty v Linuxu nedelas co? Ten Kylix to je Delphi pro Linux. Az ho
    > sezenu, zkusim to zkompilovat, ale zatim netusim, jak se to dela a co
    > to vsechno obnasi :o)

    Nedelam, ale co vim, byla by to fuska. Delphi projekty jdou zkompilovat pod
    linuxem, pokud pouzivaji (pomale) kompatibilni CLX komponenty. Nekdo by to
    nejdriv musel predelat z VCL na CLX – tech komponent je hodne a nektery z nich
    ani v CLX nejsou…

  7. hanus | 05.05.2003 | 14:05 | Odpovědět

    !!! OPRAVA !!!
    Tak jsem měl “rozhovor” s člověkem, co teď udržuje SubRip a ten silně doporučil používat rovněž soubor .idx při převádění vobsub titulků Linux-Windows, takže se omlovám za chybu. Zkoušel jsem to i bez tohoto souboru a nezdálo se mi, že by byly problémy, ale prý to vede ke špatnému časování titulků – prý při stěstí jen sekudnu, jindy i výrazně. Naštěstí pro MPlayer je hračka posouvat časování titulků oběmi směry, ale člověk musí během filmu sahat na klávesnici…

  8. hanus | 14.07.2003 | 15:59 | Odpovědět

    Můj program v Perlu pro manipulaci s SRT titulky je k dispozici na
    http://hanus.host.sk/linux/srtrepar.htm
    viz také
    http://hanus.host.sk/linux/linux.htm

  9. hanus | 06.01.2004 | 19:04 | Odpovědět

    Můj program pgm2srt, který nahrazuje dvdtit Martina Kačera, najdete na http://hanus.kgb.cz/linux/linux.htm

  10. hanus | 09.02.2004 | 16:29 | Odpovědět

    Mirror mých článků a programů je taky na http://hanus.host.sk/linux/linux.htm

Leave a comment

Sorry, you must be logged in to post a comment. Login