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

标签 javascript json parsing rdf webvtt

晚上好。

开门见山 - 我需要一个脚本,从 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 文件。

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

最佳答案

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

随意挑选开发分支的源代码(它具有最好的 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" width="512" height="288">
    <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);

祝你好运:)

关于来自 WEBVTT 的 RDF/JSON 的 Javascript 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6905167/

相关文章:

javascript - 使用正则表达式匹配和分组字符串的相同部分两次?

javascript - 如何将 file.js 调用为 file.html

java - 使用 Gson 反序列化 JSON

ios - 在 Objective c 中将文本转换为 json

包含 .ini 数据的字符串的 javascript 解析器

c - 当我使用多个字符串时函数 sscanf_s 失败

c++ - 在代码中执行自定义规则 (C/C++)

javascript - angularjs x 可编辑控件在完成或取消后失去焦点

javascript - 在 hapi.js 上添加 CSS 不起作用

javascript - 对两个关联数组/堆栈进行排序