Javascript-parser til RDF/JSON fra WEBVTT
God aften.
Direkte til sagen - jeg ville have brug for et script, der henter RDF/JSON-struktur fra et specifikt tidsinterval i en WEBVTT-fil. Findes en sådan ting?
RDF/JSON er en filstruktur specificeret af Talis, som ser sådan ud:
{ "S" : { "P" : [ O ] } }
WEBVTT implementerer nævnte struktur på denne måde:
0
00:00:00,000 --> 00:00:46,119
{ "S" : { "P" : [ O ] } }
1
00:00:48,000 --> 00:00:50,211
{ "S" : { "P" : [ O ] } }
...
Og jeg ville bruge sådan en fil, mens jeg ser videofiler på en sådan måde, at når jeg klikker på en del af tidslinjen, henter scriptet den tilsvarende RDF/JSON-kode (jeg kan allerede gøre dette, der er allerede en WEBVTT-parser), og derefter henter parseren de ønskede oplysninger i objektet fra RDF/JSON-strukturen.
Jeg blev virkelig glad, da jeg så, at jQuery har getJson implementeret, men det fungerer kun for "normale" json-filer.
Det bedste ville sandsynligvis være bare at skrive manuskriptet, men min timing og viden er meget begrænset, så jeg vil gerne høre ethvert forslag eller løsning, som nogen måtte kende.
Svar #1
Jeg har skrevet en WebVTT-parser til min <track>/HTML5 video undertekst polyfill Captionator.
Du er velkommen til at gennemgå kildematerialet fra udviklingsbranchen (som har den bedste WebVTT-overensstemmelse, så det er sandsynligvis bedre at se på det i stedet for den stabile branche.)
Parserkoden starter her: https://github.com/cgiffard/Captionator/blob/captioncrunch/js/captionator.js#L1686
I sidste ende, det du beskriver, synes dog at omtrent matche den tilsigtede anvendelse for metadata-sporetypen (som beskrevet i WHATWG's TimedTextTrack-specifikation). Du kan bruge Captionator (jeg ville elske at anbefale dig et andet bibliotek også, men jeg kender ikke til noget andet, der ikke kommer pakket med en hel videospiller, eller som implementerer TimedTextTrack JS API'en, som du har brug for) for at give support til det - TextTrack.oncuechange begivenheden og TextTrack.activeCues-listen giver dig mulighed for at lytte efter ændringer i cues, når brugeren søger inden for videotidslinjen. Du kan derefter få teksten for hver cue (minus cue-metadata og header) og parse det som JSON. Opret blot en undertekstspor som nedenfor:
<video src="myvideo.webm" poster="poster.jpg" width="512" height="288">
<track kind="metadata" src="meta.webvtt" type="text/webvtt" srclang="en" label="Metadata Track" default />
</video>
Inkluder derefter captionator-biblioteket, initialiser det som angivet i dokumentationen, vælg din spor og opsæt en hændelseshåndtering. Du kan få adgang til teksten for en enkelt cue på følgende måde:
var cueText = document.getElementById("video").tracks[0].activeCues[0].getCueAsSource();
Så bare:
var RDFData = JSON.parse(cueText);
Held og lykke :)
Svar #2
Det ser ud til, at RDF/JSON faktisk er en kompleks og indlejret JSON-struktur med vektorer, så getJSON-funktionen vil med succes kunne parse data fra den, når den er hentet fra WEBVTT-tidsstrukturen.
