来自 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);
)获取一些值时,我也不知道如何将 subject 和 predicate 名称动态分配给局部变量。我在这里搞得一团糟:D - [link]b-webdesign.com/multilab/Test05
解析的结果是一个按时间排序的线索列表。所以你应该把它从 TextTrackList 中取出来。
@Christopher @Silvia 我无法让元数据<track>
的工作示例工作。你们中的任何一个都可以帮我吗?我posted a question about it here。谢谢!【参考方案2】:
看起来 RDF/JSON 实际上是复杂的嵌套 JSON 结构,带有向量,因此一旦从 WEBVTT 定时结构中获取数据,getJSON 函数将成功地从中解析数据。
【讨论】:
以上是关于来自 WEBVTT 的 RDF/JSON Javascript 解析器的主要内容,如果未能解决你的问题,请参考以下文章