Lag et HTML-track-element
Eller lim inn underteksttekst
Innstillinger
Undertekster er for seere som kan høre lyden og trenger ordene — en oversettelse, eller samme språk skrevet ut. Tekstinger er for seere som ikke kan høre den, så de bærer også det lyden forteller alle andre: musikk, en dør, en telefon som ringer. Den samme filen kan tjene begge formål, som er grunnen til at siden spør i stedet for å gjette, og verdien kan ikke endres senere inne fra elementet. Beskrivelser, kapitler og metadata tilbys ikke: ingen av dem kan fylles med innholdet i en undertekstfil.
En kort språkkode som en, en-GB eller pt-BR, som navngir språket i ordene i undertekstene, ikke språket i videoen. Et spor som kaller seg undertekster, må oppgi et språk, så å tømme denne boksen faller tilbake til en i stedet for å droppe attributtet — og fordi hvert attributt skrives ut i resultatet, kan du se tilbakefallet før du limer inn noe.
Fri tekst: Engelsk, Engelsk (SDH), Français. Det er linjen en seer velger fra når en side tilbyr mer enn ett spor, så skriv den slik målgruppen din vil kjenne den igjen. Tømmer du boksen, fjernes attributtet helt i stedet for å skrive et tomt et, som gir navngivningen tilbake til spilleren; en tom etikett ville sette en navnløs rad i den menyen.
På, og undertekstene kommer opp så snart videoen spiller. Et medieelement kan bare ha ett standardspor, så la det stå av når siden allerede bærer ett: et andre spor som hevder å være standard, får spillere til å velge feil, mens å ikke være standard bare betyr at seeren slår det på selv.
Hvilken bildefrekvens tidene telles i. På formatsidene er det dette MicroDVD trenger, fordi det lagrer tid som bildenummer. På sidene for bildefrekvens er det frekvensen filen ble tidsstyrt mot — versjonen undertekstene ble laget for — og sidens andre boks tar frekvensen til videoen du skal bruke dem med. 23,976, 24, 25, 29,97, 30, 50, 59,94 og 60 er de vanlige. Tar du feil, forskyves hele tidslinjen, og på bildefrekvenssidene forskyves den med et forhold i stedet for et fast beløp.
Denne siden setter undertekstene dine inn i ett enkelt HTML-element du kan lime inn i en side. Det som kommer ut, er én `<track>`-linje med WebVTT-teksten innebygd i `src`-attributtet, så undertekstteksten følger med markupen selv — det finnes ingen ekstra fil å laste opp, ingen sti å få riktig, og ingen måte en avspiller kan ende opp med å lete etter noe som ikke finnes.
Innbygging er hele poenget med siden, og grunnen er hvordan nettlesere behandler lokale filer. En track hentes i stedet for å tegnes, og nettleseren nekter den hentingen når selve siden ble åpnet fra disk, så en `<track src="film.vtt">` på en side du har lagret på skrivebordet, viser ingenting i det hele tatt: ingen feil på skjermen, en tom undertekstmeny, og én linje i konsollen som folk flest aldri åpner. En `data:`-URI hentes aldri — teksten sitter i attributtet — så den virker der. Prisen er størrelse, siden hvert mellomrom og hvert linjeskift i WebVTT blir tre tegn, og den prisen er verdt å betale her: elementet finnes for at det skal virke på egen hånd.
Attributtene kommer fra boksene i panelet, fordi ingen av dem kan leses ut av filen din. `kind` betyr mest: subtitles er en oversettelse for seere som ikke kan følge lyden, og captions er den fyldigere versjonen som også bærer musikk og lydeffekter for seere som ikke kan høre den. En fil full av `[dør smeller]` og notetegn kan være begge, og bare du vet hvilket publikum den ble laget for — så siden spør i stedet for å gjette. De tre andre er språket teksten står i, navnet som vises i avspillerens undertekstmeny, og om sporet skal åpne seg selv.
To av boksene oppfører seg ulikt når du tømmer dem, og forskjellen er verdt å kjenne. Tømmer du menynavnet, forsvinner attributtet helt, fordi et navn er valgfritt og å utelate det bare overlater valget til avspilleren. Tømmer du språkboksen, skjer ikke det samme: et spor som erklærer seg som undertekster, må oppgi et språk, så en tom boks faller tilbake til `en` i stedet for å lage et element som mangler noe det er pålagt å ha. Ingen av delene er en stille erstatning — utdataene skriver hvert attributt, så du kan se hva boksene dine produserte.
Undertekstteksten inne i elementet skrives av den samme WebVTT-skriveren som konverteringssidene bruker, noe som betyr at en fil som kom inn som WebVTT, beholder alt den bar utenfor tekstblokkene: teksten på `WEBVTT`-linjen, kommentar- og stilblokker, og innstillingene per tekstblokk som avgjør hvor en linje står på skjermen. Ingenting ved filen din endres, og ingenting lastes opp; ordene, tidene og stilen forlater siden i den tilstanden de kom inn.
Eksempler
En SRT-fil, med standardboksene
Inndata
1
00:00:01,000 --> 00:00:03,000
The room is dark.
2
00:00:04,000 --> 00:00:06,000
Nobody came.
Resultat
<track kind="subtitles" src="data:text/vtt;charset=utf-8,WEBVTT%0A%0A1%0A00%3A00%3A01.000%20--%3E%2000%3A00%3A03.000%0AThe%20room%20is%20dark.%0A%0A2%0A00%3A00%3A04.000%20--%3E%2000%3A00%3A06.000%0ANobody%20came.%0A" srclang="en" label="English" default>
Én linje ut, og hele filen er inne i den: %0A er et linjeskift og %20 et mellomrom, så WebVTT-teksten følger med i src-attributtet i stedet for å sitte i en fil ved siden av siden. De fire attributtene er de fire boksene — språket teksten står i, raden en seer velger i avspillerens undertekstmeny, og default, som er det som får dette sporet til å åpne seg selv. Tekstblokknumrene fra SRT-filen beholdes som tekstblokk-identifikatorer.
En WebVTT-fil går inn som den samme WebVTT-en
Inndata
WEBVTT - exported from the editing room
NOTE The first pass was done by hand.
STYLE
::cue { color: #f2f2f2; }
intro
00:00:01.000 --> 00:00:03.000 align:start position:10%
The room is dark.
2
00:00:04.000 --> 00:00:06.000
Nobody came.
Resultat
<track kind="subtitles" src="data:text/vtt;charset=utf-8,WEBVTT%20-%20exported%20from%20the%20editing%20room%0A%0ANOTE%20The%20first%20pass%20was%20done%20by%20hand.%0A%0ASTYLE%0A%3A%3Acue%20%7B%20color%3A%20%23f2f2f2%3B%20%7D%0A%0Aintro%0A00%3A00%3A01.000%20--%3E%2000%3A00%3A03.000%20align%3Astart%20position%3A10%25%0AThe%20room%20is%20dark.%0A%0A2%0A00%3A00%3A04.000%20--%3E%2000%3A00%3A06.000%0ANobody%20came.%0A" srclang="en-GB" label="English (UK)" default>
Alt en WebVTT-fil bærer utenfor tekstblokkene, overlever: bemerkningen på WEBVTT-linjen, NOTE-blokken, STYLE-blokken som avgjør hvordan undertekstene ser ut i avspilleren, navnelinjen til tekstblokken, og innstillingen per tekstblokk align:start position:10% (%25 der er et prosenttegn, kodet fordi et bart prosenttegn ikke er tillatt i en URI). En fil som kom inn som WebVTT, går ut som den samme WebVTT-en. De to boksene sier en-GB og English (UK), fordi denne kopien ble laget for et britisk publikum — ingenting i filen sa det.
Undertekster for seere som ikke kan høre
Inndata
1
00:00:01,000 --> 00:00:03,000
[door slams]
The room is dark.
2
00:00:04,000 --> 00:00:06,000
♪ Nobody came ♪
Resultat
<track kind="captions" src="data:text/vtt;charset=utf-8,WEBVTT%0A%0A1%0A00%3A00%3A01.000%20--%3E%2000%3A00%3A03.000%0A%5Bdoor%20slams%5D%0AThe%20room%20is%20dark.%0A%0A2%0A00%3A00%3A04.000%20--%3E%2000%3A00%3A06.000%0A%E2%99%AA%20Nobody%20came%20%E2%99%AA%0A" srclang="en" label="Tom & "the boss"" default>
Filen er full av lydeffekter og musikk, som er nøyaktig det kind="captions" — undertekster for seere som ikke kan høre — er til for, og boksen er det eneste stedet det kan sies. Ved siden av ble menynavnet skrevet som Tom & "sjefen" og kommer ut som Tom & "sjefen": et ukodet anførselstegn ville lukket attributtet der og da og gjort resten av navnet til ødelagte attributter på elementet.
Tre bokser tømt eller slått av
Inndata
1
00:00:01,000 --> 00:00:03,000
A cold night,
and no heating.
2
00:00:04,000 --> 00:00:06,000
Every night this week?
Resultat
<track kind="subtitles" src="data:text/vtt;charset=utf-8,WEBVTT%0A%0A1%0A00%3A00%3A01.000%20--%3E%2000%3A00%3A03.000%0AA%20cold%20night%2C%0Aand%20no%20heating.%0A%0A2%0A00%3A00%3A04.000%20--%3E%2000%3A00%3A06.000%0AEvery%20night%20this%20week%3F%0A" srclang="en">
Tre bokser endret, tre ulike resultater, fordi HTML ber om ulike ting. Menynavnet er borte fra elementet helt — det er valgfritt, og å utelate det overlater avgjørelsen til avspilleren. Språkboksen er tom og produserer likevel srclang="en": et spor som erklærer seg som undertekster, må oppgi et språk, så en tom finnes ikke, og tilbakefallet er synlig i utdataene. Standardbryteren er av, og det attributtet er også borte, så dette sporet åpner seg ikke selv — den trygge retningen når en side bærer mer enn ett.
Ofte stilte spørsmål
Trenger jeg fortsatt en .vtt-fil ved siden av siden min?
Nei, og det er hele poenget med den innebygde formen. WebVTT-teksten ligger inne i src-attributtet som en data:-URI, så elementet bærer undertekstene sine selv. Det finnes ingen fil å kopiere opp, ingen relativ sti å få riktig, og ingenting å glemme når siden flyttes til en annen mappe. Prisen er at elementet blir større: hvert mellomrom og hvert linjeskift kodes med tre tegn, så en fil på 40 kB blir en linje på noen hundre kilobyte. For en enkelt side er det en god handel; for hundre sider er en ekstern .vtt-fil fortsatt det riktige valget.
Virker dette hvis jeg bare åpner HTML-filen fra min egen datamaskin?
Ja, og det er den ene grunnen til at siden finnes. En track hentes, og en nettleser nekter hentingen når siden ble åpnet fra en fil-URL, så en ekstern <track src="film.vtt"> viser ingenting der: ingen feilmelding, bare en tom meny. En data:-URI hentes aldri, fordi teksten allerede står i attributtet, så den virker også på en side du har lagret lokalt. Legger du elementet på en webserver, virker begge former; dette elementet virker begge steder.
Hvorfor er utdataene så mye lengre enn undertekstfilen min?
Fordi data:-URI-en prosentkoder teksten. Et mellomrom blir %20, et linjeskift blir %0A, og enkelte andre tegn tar også tre tegn, så en fil på noen titalls kilobyte vokser til flere hundre. Det er ikke dobbelt innhold og ikke en feil: det er samme tekst, skrevet på den eneste formen en URI tillater. Vil du se at ordene er intakte, kan du lime inn linjen i en side og åpne den — avspilleren leser den tilbake til vanlig WebVTT.
Hvorfor er det ikke noe label-attributt etter at jeg tømte boksen?
Fordi et menynavn er valgfritt i HTML, og et tomt navn er ikke det samme som ingen navn. Siden fjerner attributtet helt i stedet for å skrive label="", så avspilleren bruker sin egen standardtekst i menyen. Det er en bevisst forskjell fra språkboksen, der en tom verdi ikke er mulig: et spor som erklærer seg som subtitles, må oppgi srclang, så der faller en tom boks tilbake til en. Utdataene viser hvilken av de to som skjedde.
Hva er forskjellen mellom subtitles og captions her?
kind-attributtet sier hvem sporet er laget for. subtitles er en oversettelse av dialogen for seere som hører lyden men ikke forstår språket; captions er den fyldigere versjonen som også bærer det som ikke er dialog — musikk, lydeffekter, publikumsreaksjoner — for seere som ikke kan høre. Det er derfor captions er den riktige verdien for en SDH-fil. Ingen av dem kan leses ut av filen din, siden begge kan inneholde akkurat de samme ordene, så panelet spør og du velger.
Hvilke av de andre track-typene har dere utelatt?
descriptions, chapters og metadata. descriptions er en fortelling av det som skjer på skjermen for seere som ikke kan se den, og verken denne siden eller noen annen produserer slik tekst. chapters er en kapittelliste, som er en egen side. metadata er for spillerens eget bruk og har ingen tekst som kan komme fra en undertekstfil. De fire som gjenstår — subtitles, captions, subtitles for døve og hørselshemmede og forced — er de som beskriver tekst som faktisk finnes i filen din.
Endres noe i undertekstene mine på veien inn?
Nei. Filen leses og skrives av den samme WebVTT-skriveren som konverteringssidene bruker, så ordene, tidene og stilen går ut i samme tilstand som de kom inn. En fil som allerede var WebVTT, beholder bemerkningen på WEBVTT-linjen, NOTE- og STYLE-blokkene og hver tekstblokks egne innstillinger. Ingenting lastes opp, og ingen mellomfil skrives til disk. Det eneste som legges til, er selve elementet rundt teksten, og det er det du ba om.