2011-08-01 11 views
5

Buenas tardes.Analizador de Javascript para RDF/JSON de WEBVTT

Directo al punto - Necesitaría una secuencia de comandos que tome la estructura RDF/JSON del intervalo de tiempo específico en el archivo WEBVTT. ¿Existe tal cosa?

RDF/JSON es Talis especifica la estructura de archivos que tiene este aspecto:

{ "S" : { "P" : [ O ] } } 

implementos WebVTT estructura mencionados como esto:

0 
00:00:00,000 --> 00:00:46,119 
{ "S" : { "P" : [ O ] } } 

1 
00:00:48,000 --> 00:00:50,211 
{ "S" : { "P" : [ O ] } } 

... 

Y yo usaría tal archivo, mientras que la visualización de los archivos de vídeo en de modo que cuando hago clic en alguna parte de la línea de tiempo, el script recupera el código RDF/JSON correspondiente (puedo hacerlo ahora, ya hay un analizador WEBVTT), y luego el analizador recupera la información solicitada en el objeto del RDF/Estructura JSON.

Estaba muy contento cuando vi que jQuery ha implementado Json, pero funciona solo para archivos json "normales".

Lo mejor sería simplemente escribir el guión, pero mi tiempo y conocimiento son muy limitados, por lo que me gustaría escuchar cualquier sugerencia o solución que cualquiera pueda saber.

+1

¿Es posible que RDF/JSON JSON es sólo estructura compleja?O se está comportando como una matriz de datos de P vector que está bajo el objeto S? – 3mpetri

+1

Me resulta realmente extraño que WebVTT, diseñado en 2011 por lo que puedo decir, no sea ya _fully_ JSON ... – jlarson

Respuesta

5

He escrito un analizador WebVTT para mi <track>/subtitulado de video HTML5 polyfill Captionator.

dude en machacar a la fuente de la rama de desarrollo (que tiene el mejor cumplimiento WebVTT, por lo que es probablemente mejor que mirar que en lugar de la rama estable.)

El código analizador comienza aquí: https://github.com/cgiffard/Captionator/blob/captioncrunch/js/captionator.js#L1686

en última instancia, sin embargo, lo que describes parece que coincida aproximadamente con el caso de uso prevista para el tipo metadata pista (como se describe en el WHATWG's TimedTextTrack spec.) puede utilizar Captionator (me gustaría recomendar a usted como otra biblioteca bueno, pero no estoy al tanto de cualquier otra cosa que no venga con todo reproductor de video, o que implemente la API TimedTextTrack JS que necesitará) para brindar soporte: el evento TextTrack.oncuechange y la lista TextTrack.activeCues le permiten escuchar los cambios de las indicaciones cuando el usuario busca dentro de la línea de tiempo del video. A continuación, puede obtener el texto de cada cue (menos los metadatos y el encabezado cue) y analizarlo como JSON. Sólo hay que establecer una pista de subtítulos, como a continuación:

<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> 

A continuación, se incluyen la biblioteca captionator, inicializar como por la documentation, seleccionar la pista y configurar un controlador de eventos. Se puede acceder al texto de un individuo de referencia, así:

var cueText = document.getElementById("video").tracks[0].activeCues[0].getCueAsSource(); 

A continuación, sólo:

var RDFData = JSON.parse(cueText); 

Buena suerte :)

+0

Eso es increíble, muchas gracias :) ¡Lo intentaré! – 3mpetri

+0

¿Cómo se maneja la situación donde varias señales se superponen? Por ejemplo, uno es de 00:00 a 01:30, y otro de 00:00 a 00:50, y desea tener acceso a ambos valores de estructura json? Tampoco sé cómo asignar dinámicamente ** nombre ** y ** predicado ** nombre a una variable local cuando obtengo algún valor del archivo json específico (por ejemplo 'var a = ''; // cómo obtener el rfd/json subject? var b = ''; // cómo obtener el predicado rdf/json? $ ('# meta'). append (cueObject [a] [b] [0] .value); '). Estoy haciendo un gran lío aquí: D - [link] http://b-webdesign.com/multilab/Test05/ – 3mpetri

+1

el resultado del análisis es una lista de pistas ordenadas por tiempo. Entonces deberías sacarlo de TextTrackList. – Silvia

1

Parece que el RDF/JSON es de hecho una estructura JSON compleja y anidada con vectores, por lo que la función getJSON analizará con éxito los datos una vez que se haya obtenido de la estructura temporizada de WEBVTT.