晚上好.
直截了当 – 我需要一个脚本,从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> / HTML5视频字幕polyfill Captionator编写了一个WebVTT解析器.
随意挑选开发分支的源代码(具有最佳的WebVTT合规性,因此最好看一下它而不是稳定的分支.)
解析器代码从这里开始:
https://github.com/cgiffard/Captionator/blob/captioncrunch/js/captionator.js#L1686
但最终,您所描述的内容似乎与元数据轨道类型的预期用例大致相符(如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>
然后,包括captionator库,按照documentation初始化它,选择你的轨道并设置一个事件处理程序.您可以像这样访问单个提示的文本:
var cueText = document.getElementById("video").tracks[0].activeCues[0].getCueAsSource();
然后就是:
var RDFData = JSON.parse(cueText);
祝好运 :)