6

晚上好。

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

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

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

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

...

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

当我看到 jQuery 实现了 getJson 时,我真的很高兴,但它只适用于“普通”的 json 文件。

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

4

2 回答 2

6

我为我的<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>

然后,包含字幕库,根据文档对其进行初始化,选择您的曲目并设置事件处理程序。您可以像这样访问单个提示的文本:

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

然后只是:

var RDFData = JSON.parse(cueText);

祝你好运 :)

于 2011-08-03T00:56:47.197 回答
1

看起来 RDF/JSON 实际上是复杂且带有向量的嵌套 JSON 结构,因此一旦从 WEBVTT 定时结构中获取数据,getJSON 函数将成功地从中解析数据。

于 2011-08-02T13:39:08.537 回答