Převod titulků z DVD - The Last Chapter

Doufám, že poslední problém, na který jsem při převodu titulků z DVD do TXT narazil, je potřeba jejich rozdělení v případě, že DVD převádíme na 2 či více CD. Trochu jsem přeprogramoval svůj srtcheck a vznikl srtshift opět v Turbo Pascalu.

Download:

Titulky si z DVD převedeme do jednoho textového souboru ve formátu SRT titulků a to pomocí programu dvdsub nebo mého pgm2srt. U rozděleného videa na 2CD si zjistíme délku první části a přesný časový začátek druhé části. Já to dělám tak, že se mi konec první části a začátek druhé mírně překrývá (10-20 sekund), takže délka první části videa není shodná s časovým začátkem druhé části vzhledem k původnímu videu - viz obrázek.

Časová souvztažnost částí videa

První titulky je jednoduché vyrobit - pomocí některého z programů, které umí editovat textové soubory, prostě umažete titulky, které časově přesahují délku první části videa - a u SRT titulků nemusíte nic přepočítávat, protože jejich časování je v čase (hrací době) a nikoli ve snímcích. U titulků pro druhou část již ale vzniká problém - když umažeme prvních několik set titulků (podle času začátku druhé části v rámci celého filmu), pak potřebujeme jednak titulky přečíslovat od jedničky ale hlavně posunout jejich načasování zpátky přesně o dobu začátku videa na 2.CD oproti původnímu celému videu. A právě k tomu slouží tento program.

Program se spouští s parametrem, kterým je název souboru s SRT titulky, které chceme časově posunout. Takže zadáme

   ./srtshift Titulky.srt
přičemž soubor titulků musí být ve stejném adresáři jako program. Při nenalezení souboru program skončí s hlášením Runtime error - nezdržoval jsem se ošetřením neexistence souborů. Pokud program spustíte bez parametru, bude čekat na standardní vstup, v tom případě stiskněte CTRL+C.

V prvním kroku program prověří, zda jsou řádky zakončovány ve stylu Windows (CR-LF tedy 2 bajty 13 a 10), nebo jako v Linuxu pouze bajtem 10. O tomto vás taky informuje hlášením. Tuhle pasáž jsem do programu přidal pro případ jeho provozování ve Windows - ty si totiž na linuxáckém zakončení řádků vylámou zuby :o) tedy pokud se týká použitých procedur v tomto programu (readln). Jestliže jste ve Windows a program zahlásí 'Zakonceni radku ve stylu LINUX', pak nepokračujte v jeho provádění a převeďte titulky ze znakové stránky ISO-8859-2 do CP-1250. V Linuxu je to sice jedno, ten si poradí s obojím, výsledkem ale bude soubor ve formátu ISO-8859-2 co se týče zakončování řádků, ale v původní znakové sadě, takže si s tím neporadí program recode, proto pokud budete zpracovávat titulky z Windows (znaková sada CP-1250), použijte nejprve

   recode CP-1250..ISO-8859-2 Titulky.srt
pro převedení souboru s titulky z CP do ISO.
Po spuštění se vás srtshift tedy zeptá
   Zakonceni radku je ve stylu LINUX
   Mam pokracovat? [a/n]: A
Když na dotaz odpovíte ano, budete dotázáni na posun titulků:
   Pocet sekund pro posun titulku [ - + uzij desetinnou tecku]:
Jestli chcete jít v časování nazpět, což je náš případ pro titulky na CD2, pak vložte záporné číslo, přičemž vstup se očekává v sekundách; jako desetinný oddělovač použijte tečku (pro případ na obrázku bychom vložili -3958.04). Kladné vložené číslo zpožďuje titulky.

Program přejmenuje původní zdrojový soubor na Titulky.srt.old a v původním jménu souboru již budou nové, posunuté titulky. V posledním kroce program zkontroluje správnost SRT titulků - Kontroluji po sobe: - tak jako srtcheck a zobrazí případné nalezené chyby. Výpis teček je použit jako ukazatel průběhu činnosti programu.

Pokud potřebujete pouze přečíslovat titulky od 1 dále (např. jste některé titulky vymazali), pak zadejte jako číslo pro posun nulu. Rovněž tak se upraví počet prázdných řádků na jeden mezi jednotlivými titulky.

Jako poslední krok při práci na titulcích je pak můžete převést do CP-1250, resp. ponechat v ISO-8859-2.

Nové verze programu

24.6.2003
Odstraněn problém při převodu a zápisu čísla v sekundách na čas ve formátu XX:XX:XX,XXX - při specifickém čísle v sekundách docházelo k vypuštění jedné číslice u desetinné části vteřin a program pak končil hlášením '-chyba ve formatu casu!'. Týká se to oblasti řádků 242-250 a 275-283.
Dále jsem přidal test zadaného posunu ve vteřinách, aby nevznikaly záporné titulky - řádky 213-220.
zdroják pro Linux binárka pro Linux

7.11.2003
Program jsem přepsal do Perlu, spojil s programem srtcheck a přidal pár dalších šikovných funkcí - viz článek o SRTREPAIR.


LINUX

malá ikona

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