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