来自WEBVTT的RDF/JSON的Javascript解析器

3mp*_*tri 5 javascript parsing json rdf webvtt

晚上好.

直截了当 - 我需要一个脚本,从WEBVTT文件中的特定时间间隔抓取RDF/JSON结构.这样的事情存在吗?

RDF/JSON是Talis指定的文件结构,如下所示:

{ "S" : { "P" : [ O ] } }
Run Code Online (Sandbox Code Playgroud)

WEBVTT实现了这样的结构:

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

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

...
Run Code Online (Sandbox Code Playgroud)

我会在查看视频文件的同时使用这样的文件,当我点击时间线的某些部分时,脚本会获取相应的RDF/JSON代码(我现在能够执行此操作,已经有一个WEBVTT解析器),然后解析器从RDF/JSON结构中获取对象中的请求信息.

当我看到jQuery实现了getJson时,我真的很开心,但它只适用于"普通"json文件.

最好的办法可能是编写脚本,但我的时间和知识非常有限,所以我想听听任何人可能知道的任何建议或解决方案.

Chr*_*her 5

我为我的<track>/ HTML5视频字幕polyfill Captionator编写了一个WebVTT解析器.

随意挑选开发分支的源代码(具有最佳的WebVTT合规性,因此最好看一下它而不是稳定的分支.)

解析器代码从这里开始:https: //github.com/cgiffard/Captionator/blob/captioncrunch/js/captionator.js#L1686

最终,你所描述的内容似乎大致匹配metadata轨道类型的预期用例(如WHATWG的TimedTextTrack规范中所述).你可以使用Captionator (我也很乐意向你推荐另一个库,但我'我不知道其他任何未与整个视频播放器捆绑在一起的,或者实现了你需要的TimedTextTrack JS API)以提供对它的支持 - TextTrack.oncuechange事件和TextTrack.activeCues列表使你能够监听提示的变化用户在视频时间轴内寻找.然后,您可以获取每个提示的文本(减去提示元数据和标题)并将其解析为JSON.只需设置如下所示的字幕轨道:

<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>
Run Code Online (Sandbox Code Playgroud)

然后,包括captionator库,根据文档初始化它,选择您的轨道并设置事件处理程序.您可以像这样访问单个提示的文本:

var cueText = document.getElementById("video").tracks[0].activeCues[0].getCueAsSource();
Run Code Online (Sandbox Code Playgroud)

然后就是:

var RDFData = JSON.parse(cueText);
Run Code Online (Sandbox Code Playgroud)

祝好运 :)