Podnapisi SRT (SubRip)
Obstaja precej formatov, v katerih lahko zapišemo podnapise. Eden najbolj enostavnih pa je nedvomno format SRT. Format SRT je nastal na prelomu tisočletja skupaj s programoma SubRip in SubViewer. Naloga prvega je bila izluščiti podnapise iz DVD posnetkov in jih zapisati v format SRT, drugi pa jih je potem prebiral in prikazoval.
Format je narejen tako, da ga lahko človek enostavno prebere, in v svoji najosnovnejši obliki vsebuje zgolj neoblikovano besedilo. Kasneje se je nekoliko razvil in začel podpirati nekatere značke HTML, s katerimi je mogoče besedilo odebeliti, nagniti, podčrtati, obarvati in tako naprej. Vse te nadaljnje razširitve so nastale bolj kot ne spontano in so nekakšen neuraden dogovor, ki ga podpira večina bolj priljubljenih večpredstavnostnih predvajalnikov.
Format
Pa si oglejmo podrobnosti. Datoteka, v kateri so shranjeni podnapisi SRT, ima pripono .srt. Besedilo v datoteki nima standardno določenega kodiranja (načina, kako so črke, števke in znaki zapisani), zato morajo programi, ki obdelujejo in prikazujejo podnapise, praviloma sami dognati, kako je zapisana datoteka. Če hočemo podpreti čim večji nabor znakov (torej črk, simbolov, pismenk in podobno), cenjenemu bralcu predlagam kodiranje UTF-8 z oznako razvrstitve bajtov (angl. byte order mark, BOM), ki je dandanes podprto že praktično povsod. Oznaka BOM na začetku signalizira programom, ki zaznavajo kodiranje, da gre za predstavitev UTF-8.
Kot zanimivost naj omenim, da marsikateri slovenski podnaslovi, na katere naletimo po spletu, uporabljajo kodiranje Windows-1250, ki izvira iz Microsoftovih Oken.
Če datoteko SRT odpremo s poljubnim besedilnim urejevalnikom, opazimo, da gre za enostaven besedilni dokument. Podnapisi so med seboj ločeni z eno prazno vrstico. Prva vrstica podnapisa vsebuje njegovo zaporedno številko, začenši z 1.
Druga vrstica vsebuje časovno informacijo, se pravi kdaj se podnapis prikaže in kdaj izgine. Čas prikaza in čas izginotja sta med seboj ločena z nizom „-->“. Časovni format je HH:MM:SS,mmm, kjer HH predstavlja ure, MM minute, SS sekunde in mmm milisekunde. Ure, minute in sekunde morajo vsebovati vsaj dve števki (ure lahko tudi več). Tako 1 sekundo zapišemo kot 01, 25 sekund pa kot 25. Milisekunde zapisujemo na tri mesta natančno, pri čemer števila po potrebi z leve daljšamo z 0 (npr. 1 milisekunda postane 001, 25 milisekund pa 025). Paziti je treba tudi na decimalno vejico med sekundami in milisekundami. Obstajajo tudi datoteke SRT, ki vejico zamenjajo s piko, čeprav to ni standardno.
Po časovni vrstici sledi poljubna količina vrstic besedila.
Slogi besedila
Tukaj se najosnovnejša varianta formata konča. Neobdelano besedilo je sčasoma postalo preveč omejujoče in prišlo je do razširitev, ki so prinesle slogovno urejanje.
Sloge lahko dodajamo prek značk HTML. Vsaka značka se začne z lomljenim uklepajem in končna z lomljenim zaklepajem, na primer <i> ali </b>. Značke so bodisi začetne (<u>) bodisi končne (</u>), pri čemer imajo končne značke poševnico pred imenom. Pazimo: <font size="10">...</font>. Ime v znački pove, kakšne vrste oblikovanje značka nanaša. Trenutno je razširjena podpora za naslednje sloge:
- Poševno besedilo (<i>).
- Odebeljeno besedilo (<b>) – nekateri predvajalniki za podnapise privzeto uporabijo odebeljeno pisavo, zato značka <b> v njih nima učinka.
- Podčrtano besedilo (<u>).
Prečrtrano besedilo(<s>).- Obarvano besedilo (<font color="...">) – atribut color lahko za vrednost sprejme ime barve (npr. red) ali šestnajstiško vrednost (npr. #ff00a3); več o imenih in šestnajstiških vrednostih piše tukaj.
- Prilagojena velikost besedila (<font size="...">) – atribut size prejme pozitivno celo število, ki predstavlja velikost znakov v pikslih.
- Različne pisave besedila (<font face="...">) – atribut face prejme ime pisave, ki naj bo uporabljena v besedilu. Paziti moramo, saj je nabor pisav, ki so predvajalniku na voljo, odvisen od operacijskega sistema.
Značke lahko kombiniramo, tako da jih gnezdimo. Na primer, besedilo 2 se izriše, kot kaže slika 1.
Nekateri podnapisi izpuščajo končno značko. V tem primeru velja slog do konca besedila v podnapisu. Primer takega podnapisa vidimo v besedilu 3.
Postavitev podnapisov na zaslonu
Poleg urejanja besedila samega si poglejmo še možnosti postavitve besedila na posnetku. Tudi to ni standardizirano. Obstaja dogovor o določanju koordinat prikazovanja podnapisa (ki se ga, kolikor sem sam testiral, drži zgolj predvajalnik mpv). Te koordinate dodamo na koncu časovne vrstice za presledkom, in sicer v obliki X1:xxx X2:yyy Y1:zzz Y2:www, kjer xxx, yyy, zzz in www zamenjamo s celimi števili, ki predstavljajo točke (piksle) na posnetku. Po nekaj testiranja lahko samo predlagam, da X1 in Y1 nastavimo na 0, X2 in Y2 pa na poljubno točko na sliki, kamor želimo podnapis postaviti.
Druga varianta postavljanja podnapisov, ki je tudi elegantnejša in bolj razširjena, čeprav manj prilagodljiva, je uporaba značk SSA:
- {\an1} – podnapis postavi spodaj in levo,
- {\an2} – podnapis postavi spodaj in na sredino vodoravno,
- {\an3} – podnapis postavi spodaj in desno,
- {\an4} – podnapis postavi na sredino navpično in levo,
- {\an5} – podnapis postavi na sredino navpično in na sredino vodoravno,
- {\an6} – podnapis postavi na sredino navpično in desno,
- {\an7} – podnapis postavi zgoraj in levo,
- {\an8} – podnapis postavi zgoraj in na sredino vodoravno ter
- {\an9} – podnapis postavi zgoraj in desno.
Značka je lahko kjerkoli v besedilu, velja pa za ves podnapis.
Presledki
Kar se presledkov tiče, večina implementacij spregleda morebitne začetne in končne presledke besedila posameznega podnapisa. Nekatere implementacije podpirajo dva niza:
- \N – pomeni vsiljen prelom vrstice,
- \h – pomeni vsiljen presledek (ta se upošteva tudi na začetku in koncu besedila).
O podprtosti oblikovanje je bilo nekoč opravljenih nekaj preizkusov na takrat najbolj priljubljenih predvajalnikih. Sam sem izvedel malce novejši preizkus, vendar sem uporabil enake podnapisne datoteke.
| Predvajalnik | Pisave | Obravnavanje napak | Oblikovanje | Postavitev besedila |
|---|---|---|---|---|
| Media Player Classic Home Cinema 2.5.2 | Ne gnezdi značk <font> pravilno. | / | Pokaže neveljavne značke. Ne zazna črne barve. Skrije besedilo v zavitih oklepajih. | Ne zazna koordinat. Podnapisi se ne prekrivajo. |
| BS Player 2.78 | ✓ | / | Pokaže neveljavne značke. Besedila ne odebeli. Skrije besedilo v zavitih oklepajih. | Ne zazna koordinat. Ne omogoča vsiljene nove vrstice z \N. Če so uporabljene značke SSA za postavitev, se podnapisa, ki se časovno prekrivata, izrisujeta en čez drugega. |
| PotPlayer 250625 | Gnezdenje značk <font> mu dela težave. | / | Ne zazna črne barve. Ne spreminja velikosti (<font size="...">). Skrije vse potencialne značke HTML. Skrije vse v zavitih oklepajih. | Ne zazna koordinat. |
| QuickTime Player 7.7.9 | Ni mogoče predvajati SRT podnapisov. | |||
| Windows Media Player Legacy | ✓ | / | Besedila ne odebeli. Pokaže neveljavne značke. Skrije vse v zavitih oklepajih. | Ne zazna koordinat. |
| Windows Media Player (na Windows 10 in 11) | ✗ | ? | Ne podpira oblikovanja. | Značke SSA prikaže v besedilu. |
| Kodi 20.5 | ✗ | / | Ne spreminja velikosti. Skrije neveljavne HTML značke. Ima težave s samostojnimi > in <, napačno zaklepa značke. Skrije vse v zavitih oklepajih. | Ne zazna koordinat. |
| VLC 3.0.20 | ✓ | Če je med dvema podnapisoma več praznih vrstic, potem požre še naslednji podnapis. | Pokaže neveljavne nezaprte začetne značke in neveljavne nezaprte končne značke. Ne upošteva vsiljenega preloma vrstice. | Ne zazna koordinat. |
| mpv 0.40.0 | ✓ | / | Skrije vse HTML značke. | / |
Če potegnemo črto, večina predvajalnikov dandanes podpira osnovne značke HTML: poševno (<i>), odebeljeno (<b>), podčrtano (<u>) in prečrtano (<s>) pisavo. Tudi značke SSA lahko večinoma brezskrbno uporabljamo, razen na privzetem Windowsovem predvajalniku. Vse ostale funkcionalnosti so zelo različno podprte, zato je treba preveriti, ali naš ciljni predvajalnik (ali več teh) podpira to, kar želimo v podnapisih prikazati.