TOPlist

Textové titulky

jak dostat textové titulky do obrazu MPEG-2 (DVD)

Filmy na DVD používají pro zobrazování titulků jednoduchý "fígl". Titulky jsou totiž na DVD uloženy jako sled obrázků s průhledným pozadím a "překrytím" obrazu filmu takovýmto obrázkem se dociluje zobrazení titulků. Tento způsob elegantně řeší případné problémy s různými pro nás exotickými druhy písma a zároveň umožňuje vložit do obrazu i jednoduchou grafiku.

Bohužel, naprosto neřeší problém, jak dostat do obrazu titulky, které jsou v textové podobě (což je dnes velmi rozšířená forma otitulkování filmů na PC).

Na PC pochopitelně existuje řada přehrávačů (včetně Windows Media Playeru), které umí zobrazit na obrazovce monitoru titulky z textového souboru tím nejjednodušším možným způsobem: vyrenderují je přes přehrávaný obraz. Tento způsob je sice jednoduchý, avšak ne vždy ideální. Pro uživatele, kteří mají k PC připojenou televizi (ev. ti movitější datový projektor) a filmy si promítají na ní, je tento způsob nepoužitelný, protože titulky "nakreslené" na monitoru jsou vcelku nanic, když je obraz filmu na TV.

Již delší dobu existuje jeden způsob, jak dostat titulky na libovolné DirectX Media kompatibilní výstupní zařízení při přehrávání MPEG-1 nebo AVI souborů: pomocí DirectShow filtru - titulkovače, který titulky renderuje přímo do obrazového datového proudu.

Ačkoli se DirectShow chain uplatňuje i při přehrávání MPEG-2 obsahu, mnou používaný DirectShow filtr DivXG400 se na konec tohoto řetězce nemohl zapojit. Důvod je prostý: výstup dat z MPEG-2 dekodéru velmi specifický. Hledal jsem proto způsob, jak ten "specifický" proud dat převést na něco "obvyklého", tak, aby se ke slovu dostal i DivXG400.

K videokartě jsem dostal pro přehrávání DVD software Matrox DVD Player (ve skutečnosti je to RAVISENT CinePlayer) a k DVD mechanice pro změnu CyberLink PowerDVD. To uvádím kvůli tomu, že RAVISENT Cinemaster MPEG 2 Video Decoder se mi nepodařilo přimět ke spolupráci, předpokládám, že je to proto, že on pošle nedekódovaný MPEG-2 obraz a subpicture přímo do videokarty a ta dekompresi a overlay provede hardwareově. Cyberlink Video/SP Decoder umožňuje hardwareové dekódování vypnout, takže s ním nakonec byla rozumná řeč.

Ačkoli lze některými "obyčejnými" přehrávači (nemám na mysli sw DVD přehrávače) přehrávat přímo VOB soubory, jsou tu dva důvody, proč tak nečinit:

  1.  - pokud je film roztažen přes několik VOBů (což je vždy, Futurama se svými 20ti minutovými epizodami je jedna z mála výjimek), můžete narazit na problém si celý film plynule bez přerušení přehrát
  2.  - na DVD disku jsou VOBy zašifrované, a kromě sw DVD přehrávačů je žádný jiný přehrávač dešifrovat neumí (respektive ze zákona ani nesmí)

Z tohoto vyplývá nutnost ripnout si DVD na HDD a to nejlépe tak, aby na konci byl jeden celistvý MPEG-2 soubor s obrazem (pochopitelně) a pouze tou zvukovou stopou, která jediná vás zajímá. Docílit tohoto je velmi jednoduché a stačí na to dva programy: DVDDecrypter pro rip streamů a TMPGEnc pro mux streamů do výsledného souboru.

Poznámka k obrázkům níže: kvůli velikosti nejsou v true color, ale jen v 64 barvách, takže screenshoty přehrávaného filmu berte jen jako orientační (cílem bylo ukázat, že v obraze jsou nebo nejsou titulky). Počítač je Pentium III 1 GHz, 256 MB RAM s Matrox G550 a Windows 98 SE CZ. DivXG400 je verze 2.8 a FFDShow je z 13.12.2002. FFDShow sice také umí titulky (takže by DivXG400 teoreticky nebylo třeba), ale tuto alfa verzi jsem k tomu aby renderovala titulky nepřemluvil a novější verzi z 3.1.2003 jsem nerozchodil vůbec (chybí nějaká DLL). FFDShow se zapnutím "raw video" zařadí za MPEG-2 dekodér a za něj se zařadí DivXG400. FFDShow s obrazovými daty nic nedělá, ale nepřišel jsem na způsob, jak DivXG400 napojit na MPEG-2 dekodér přímo.

Na obrázku výše je vidět konfigurace Direct show filtrů FFDShow a DivXG400, program GRAPHEDIT zároveň znázorňuje, jak je datový proud postupně zpracováván a je též vidět vytížení CPU, který veškerá data - včetně deinterlace - interpretuje (hardwareové dekódování je vypnuté).

Tento je obrázek ukazuje, kde je nutné vypnout hardwareovou akceleraci dekomprese MPEG-2 streamu ( není zafajfkováno Use Hardware Accelerator ). Samozřejmě, že v případě použití jiného sw DVD přehrávače, bude nejspíš použit i jiný dekompresor MPEG-2 streamu a jestli bude (ne)umět hardware dekompresi a vypouštět z výstupu XForm kompatibilní stream neví Bůh.

Využití CPU při přehrávání - hardwareové dekódování je vypnuté - titulky jsou.

Využití CPU při přehrávání - hardwareové dekódování je zapnuté - titulky nejsou.

U výše uvedených obrázků je zapotřebí odečíst cca 20% zátěže CPU, která připadá na captureovací utilitu a samotný program Sledování systému.

U tohoto obrázku neběžela captureovací utilita (snímal jsem prostým ALT/PRINTSCREEN). Nicméně využití CPU je poněkud zmatečné, protože díky nějaké chybě ve Windows se zátěž CPU neustále zvyšuje s každým ukončením jakéhokoli programu (po třech spuštění a ukončení Sledování systému je CPU trvale vytížen na 75% ?!). Co za to může nevím, ale v případě přehrávání videa podezřívám konec DirectShow řetězce. Po přibližně 5ti zavření WMP je totiž vytížení CPU trvale 100% - když se ale spustí WMP a přehrávání se pozastaví, klesne využití CPU i na 1%. Pokud se teď chechtáte "no jó, blbej Windows Media Player", tak vás mohu ubezpečit, že on toho není příčinou, protože to svorně dělaly všechny přehrávače, které jsem vyzkoušel a bylo lhostejné, zda-li jsem přehrával MPEG-1, DivX, XviD nebo MPEG-2. Přitom i při 100% zatíženém CPU jsou Windows "svižné", jako kdyby se CPU flákal. Mám podezření, že CPU vůbec vytížen není a že naopak Sledování systému ukazuje naprosté bludy.

Legenda k obrázku:

  1.  - start Windows 98 Druhé vydání (myš dopřesýpala, CPU není ničím zatížen)
  2.  - start Windows před chvílí dokončen, využití CPU z ničehož nic stoupá (přitom už se žádné další programy nespouští, disk je v klidu, ani myš nepřesýpá)
  3.  - myší cvaknu na ikonu MPEG-2 filmu (zajímavé je, že proces označování ikony sníží využití CPU)
  4.  - Windows Media Player startuji stiskem klávesy Enter
  5.  - přehrává se film MPEG-2. Horní graf zobrazuje cca 20%, kdy je hardwareové dekódování zapnuté (zcela paradoxně je při přehrávání CPU vytížen méně, než byl v době, kdy Windows nic nedělaly!), dole 40%, kdy je vypnuté
  6.  - dávám PAUSE, zátěž klesá k 0%

Shrnutí

Pokud pominu sporné Sledování systému, tak je závěr takovýto:

Pokud je váš MPEG-2 dekodér schopen softwareové dekomprese, lze za něj zařadit ffdshow, čímž se ke slovu dostane DivXG400, který do obrazového proudu vyrenderuje titulky. Obrazový proud pak doputuje k vaší spokojenosti jak do okna DirectX Media kompatibilního přehrávače, tak i na TV výstup videokarty.


Home • Videosoubory • Titulky • Epizody • DVD • FanArt