HTTP实时流:如何在iOS8中使用Javascript侦听作为ID3标记嵌入的定时元数据?

HTTP实时流:如何在iOS8中使用Javascript侦听作为ID3标记嵌入的定时元数据?,javascript,ios8,http-live-streaming,Javascript,Ios8,Http Live Streaming,我们有一个视频流平台,用户可以在其中播放实时视频流,并将其与一组演示幻灯片同步。为了在iOS上显示广播,我们使用HTTP实时流媒体。为了在iOS流中的正确时间显示幻灯片,我们正在收听苹果Quicktime Javascript API提供的qt_timedmetadataupdated事件。此方法描述如下: 然而,在iOS8中,这种方法不再有效,因此我们正在尝试寻找替代解决方案 有人知道我们该怎么做吗 我所取得的唯一进步是检查“带内元数据文本跟踪”,如下所述: 我在下面使用flowplaye

我们有一个视频流平台,用户可以在其中播放实时视频流,并将其与一组演示幻灯片同步。为了在iOS上显示广播,我们使用HTTP实时流媒体。为了在iOS流中的正确时间显示幻灯片,我们正在收听苹果Quicktime Javascript API提供的
qt_timedmetadataupdated
事件。此方法描述如下:

然而,在iOS8中,这种方法不再有效,因此我们正在尝试寻找替代解决方案

有人知道我们该怎么做吗

我所取得的唯一进步是检查“带内元数据文本跟踪”,如下所述:

我在下面使用flowplayer和设置了一个示例测试页面:

在代码中,我创建了一个间隔,每隔500毫秒检查是否存在
kind
属性为
metadata
的文本轨迹。我注意到,当向流中注入一点定时元数据时,就会创建其中一个文本轨迹。但问题是,我无法访问定时元数据中的数据,我需要这些数据来正确同步(前面提到的)幻灯片


请注意,我只关心直播。播放现有媒体文件不是问题。

我认为文本曲目是一个不错的选择。我以前也使用过qt_TimedMetadataUpdate,并在ios8上很好地实现了如下功能:

$(videoElement).textTracks.addEventListener('addTrack', function(addTrackEvent) {
  var track = addTrackEvent.track;
  track.addEventListener('cuechange', function(cueChangeEvent) {
    and so on...
  })
})

铁麦克的解决方案几乎是正确的。当跟踪事件通过时,您必须将其
模式
属性设置为
隐藏
,否则
提示更改
事件将不会触发。下面是一个完整的示例:

$(videoElement)[0].textTracks.addEventListener('addtrack', function(addTrackEvent) {
  var track = addTrackEvent.track;
  track.mode = 'hidden';

  track.addEventListener('cuechange', function(cueChangeEvent) {
    // do what you want with the cueChangeEvent
  });
});

谢谢你的帮助,迈克。我发现
cuechange
事件没有触发。当通过发送一些新元数据但没有
cuechange
时,将触发
addtrack
事件。当我检查
轨迹
对象时,
提示
活动提示
属性为空。就通知而言,这对我有效。变化事件正在发生。但我可以;我们无法获取线索中的数据。所以,如果,比方说,我在ID3标签中发送了“hello world”,我似乎无法检索该文本。我刚听说发生了什么事。@Robert我在
cueChangeEvent.target.activeCues[0].value.data
中找到了数据
cueChangeEvent
是传递给
cuechange
事件侦听器的参数。帮我提前谢谢你。。。。