HTTP Live Streaming: как слушать временные метаданные, встроенные в теги ID3 с помощью Javascript в iOS8?

У нас есть платформа потокового видео, где пользователи могут транслировать живой видеопоток и синхронизировать его с набором слайдов презентации. Для отображения трансляции на iOS мы используем HTTP Live Streaming. Чтобы показать слайд в нужное время в потоке на iOS, мы слушали qt_timedmetadataupdated событие, предоставляемое API QuickTime Javascript от Apple. Этот метод описан здесь:

http://www.wowza.com/forums/content.php?355-How-to-debug-timed-data-events-%28ID3-tags%29-from-Apple-HLS-streams-in-iOS-devices

однако в 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...
  })
})