WebVTT is het ondertitelformaat dat een browser kan lezen. En het is het enige: zet een SRT in een HTML5-video en er gebeurt helemaal niets. Geen fout, geen waarschuwing, geen ondertitel.
Zijn uitgang is .vtt en binnenin lijkt hij veel op een SRT. Drie dingen veranderen: hij draagt een verplichte kop, hij zet een punt waar een SRT een komma zet, en hij kan aanzienlijk meer uitdrukken dan een SRT lukt.
Wat erin staat
WEBVTT
1
00:00:04.120 --> 00:00:06.480
Voordat we naar de cijfers gaan,
lopen we nog even na waar we staan.
2
00:00:06.600 --> 00:00:09.000 line:90% align:start
Wat ik niet verwacht had,
was de val in de tweede week.
Die eerste regel moet WEBVTT zeggen. Staat hij er niet, zit er een bytemarkering voor, of komt er een lege regel voor, dan gooit de browser het hele bestand weg.
Van daaraf dezelfde blokken als altijd. Met twee verschillen die je in één oogopslag ziet: de punt voor de milliseconden, en de mogelijkheid instellingen aan het eind van de tijdregel te hangen.
Wat hij toevoegt boven een SRT
Positie en uitlijning. line:90% laat de ondertitel zakken, align:start plakt hem links en position:20% schuift hem naar de zijkant. Handig om een tekst die al in het beeld staat niet te bedekken.
Stijl. Een STYLE-blok met echt CSS aan de kop van het bestand, en klassen door de tekst gestrooid met <c.verteller>. Kleuren, groottes, schaduwen.
Wie er spreekt. Een label <v Marta>Goedemorgen</v> is de manier waarop de stem gemarkeerd wordt. Spelers die het herkennen kunnen hem in een andere kleur zetten; de rest gaat eraan voorbij. Bij een interview of een vergadering is dat de grens tussen een muur van tekst en iets leesbaars.
Notities en gebieden. De NOTE-blokken bewaren aantekeningen die niemand ziet, en REGION bakent stukken van het scherm af met hun eigen loop, zoals de teksten die bij een uitzending omhoogrollen.
Kenmerken voor spreekregels. Boven de tijdregel neemt elk blok een naam aan — intro, vraag-3 — om hem vanuit JavaScript aan te wijzen.
Wanneer je een VTT nodig hebt
Elke keer dat de video in een browser loopt. Bevat je pagina een <video> met zijn <track>, dan moet dat bestand WebVTT zijn:
<video controls>
<source src="vergadering.mp4" type="video/mp4" />
<track src="vergadering.vtt" kind="subtitles" srclang="nl" label="Nederlands" default />
</video>
En hetzelfde met de webspelers van vandaag (Video.js, Plyr, Shaka) en met HLS-uitzendingen, die de ondertitels als WebVTT-stukken verdelen.
Voorbij de deur van de browser vraagt bijna niemand erom: de montageprogramma's op de computer, de spelers die iedereen altijd gebruikt heeft en bijna elk uploadformulier verwachten nog een SRT.
Twee dingen die stukgaan en niet de schuld van het bestand zijn
De server moet hem als text/vtt leveren. Geleverd als text/plain of als application/octet-stream gooien sommige browsers hem weg. Dat wordt in de serverinstelling aangeraakt, nooit in het bestand.
En hij moet van dezelfde herkomst komen, of CORS meebrengen. Een .vtt op een ander domein zonder de kop Access-Control-Allow-Origin laadt nooit, hoe mooi het adres ook werkt wanneer je het met de hand opent. Het is de oorzaak nummer één van de klassieker «de video loopt, de ondertitels niet».
Geen van de twee is een probleem van de inhoud en geen van de twee laat een zichtbare fout op de pagina achter. Ze komen naar voren in het netwerktabblad van het browsergereedschap, en alleen als je weet dat je daar moet kijken.
Hem omzetten
De weg van SRT naar VTT is eenvoudig: de kop erop zetten, een punt zetten waar de komma stond, en die tekens & en < beschermen die een SRT als tekst houdt en die WebVTT voor opmaak zou nemen. Onze omzetter van SRT naar VTT regelt alle drie in je browser, zonder dat het bestand hem verlaat.
Andersom blijft alles buiten wat een SRT niet kan zeggen — de positie, de stijl, de gebieden — dus de omzetter van VTT naar SRT gooit het weg en maakt van de stemlabels een «Marta:» dat de regel opent, zoals een SRT het kan tonen. Welke waarvoor.
Als je de video hebt en niet de ondertitels
Upload hem en we geven de transcriptie terug met zijn minuten, met elke stem apart en met een naam, en met een samenvatting. De VTT valt daar al in elkaar gezet en met gemarkeerde stemmen uit. Zonder account om te beginnen.