来自 WEBVTT 的 RDF/JSON Javascript 解析器

Posted

技术标签:

【中文标题】来自 WEBVTT 的 RDF/JSON Javascript 解析器【英文标题】:Javascript parser for RDF/JSON from WEBVTT 【发布时间】:2011-10-17 19:46:00 【问题描述】:

晚上好。

直截了当——我需要一个从 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 文件。

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

【问题讨论】:

RDF/JSON 是否可能只是复杂的 JSON 结构? O 表现为 S 对象下的 P 向量的数据数组? 我觉得很奇怪,据我所知,WebVTT 是在 2011 年设计的,还没有完全 JSON... 【参考方案1】:

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

随意挑选开发分支的来源(它具有最好的 WebVTT 合规性,因此最好查看它而不是稳定分支。)

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

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

<video src="myvideo.webm" poster="poster.jpg"  >
    <track kind="metadata" src="meta.webvtt" type="text/webvtt" srclang="en" label="Metadata Track" default />
</video>

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

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

那么就:

var RDFData = JSON.parse(cueText);

祝你好运:)

【讨论】:

您如何处理多个线索重叠的情况?例如,一个是从 00:00 到 01:30,另一个是从 00:00 到 00:50,您想访问这两个 json 结构值吗?当从特定的 json 文件(例如var a = ''; //how to get the rfd/json subject? var b = ''; //how to get the rdf/json predicate? $('#meta').append(cueObject[a][b][0].value);)获取一些值时,我也不知道如何将 subjectpredicate 名称动态分配给局部变量。我在这里搞得一团糟:D - [link]b-webdesign.com/multilab/Test05 解析的结果是一个按时间排序的线索列表。所以你应该把它从 TextTrackList 中取出来。 @Christopher @Silvia 我无法让元数据&lt;track&gt; 的工作示例工作。你们中的任何一个都可以帮我吗?我posted a question about it here。谢谢!【参考方案2】:

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

【讨论】:

以上是关于来自 WEBVTT 的 RDF/JSON Javascript 解析器的主要内容,如果未能解决你的问题,请参考以下文章

WEBVTT 字幕显示多次

使用 WebVTT 未显示字幕

AVURLAsset 加载 webvtt 文件

用 PHP 读取 WebVTT 文件

WebVTT 字幕未在 Chrome 中显示

通过 jquery 操作 WebVTT 提示