HTTP Live Streaming: как слушать временные метаданные, встроенные в теги ID3 с помощью Javascript в iOS8?
У нас есть платформа потокового видео, где пользователи могут транслировать живой видеопоток и синхронизировать его с набором слайдов презентации. Для отображения трансляции на iOS мы используем HTTP Live Streaming. Чтобы показать слайд в нужное время в потоке на iOS, мы слушали qt_timedmetadataupdated
событие, предоставляемое API QuickTime Javascript от Apple. Этот метод описан здесь:
однако в iOS8 этот метод больше не работает, поэтому мы пытаемся найти альтернативное решение.
кто-нибудь есть идея, как мы могли бы это сделать?
единственный бит прогресса, который мне удалось сделать, - это проверка "текстовой дорожки внутриполосных метаданных" , как описано здесь:
https://github.com/videojs/videojs-contrib-hls#in-band-metadata
Я установил пример тестовой страницы ниже с помощью flowplayer и плагин flashls:
http://jsbin.com/vohicoxegi/1/edit?html,js, выход
в коде я создал интервал, который проверяет каждые 500 мс, существует ли текстовая дорожка, чья kind
недвижимость metadata
. Я заметил, что когда немного синхронизированных метаданных вводится в поток, затем создается один из этих текстовых треков. Но проблема в том, что для меня нет способа получить доступ к данным, которые находятся в синхронизированных метаданных, которые мне нужно синхронизировать (ранее упомянутые) слайды правильно.
обратите внимание,что меня интересует только прямая трансляция. Воспроизведение существующего медиафайла не является проблемой.
2 ответов
mode свойство hidden
иначе cuechange
события не будут срабатывать. Вот полный пример:
$(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
});
});
Я думаю, текст песни Путь. Я раньше qt_timedmetadataupdated и получил это хорошо работает на iOS8 такой:
$(videoElement).textTracks.addEventListener('addTrack', function(addTrackEvent) {
var track = addTrackEvent.track;
track.addEventListener('cuechange', function(cueChangeEvent) {
and so on...
})
})