2016-12-08 10 views
0

Я хотел бы получить реплики из файла глав, загруженного в мой объект Video.js. Я уже нашел, как получить трек, но мне нужен его id, чтобы получить к нему доступ.Получение реплик с треков глав VTT с Video.js

player.textTracks().getTrackById(<trackID>); 

Я узнал, где id определяется в Video.js 5.14.0 библиотеки:

// video.js/dist/video.js (line 19195) 
var trackProps = { 
    id: options.id || 'vjs_track_' + Guid.newGUID(), 
    kind: options.kind || '', 
    label: options.label || '', 
    language: options.language || '' 
}; 

кажется, что вы можете определить свой собственный id, передавая объект функции:

// video.js/dist/video.js (line 19178) 
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 

я загружаю главу трек следующим образом:

<track kind="chapters" src="chapters.vtt" srclang="en" default> 

Я читал, что вы можете динамически добавлять файлы треков, но вам придется перезагрузить объект Video.js.

ответ

1

Вы можете получить все треки, а затем получить тот, который имеет тип chapters:

player.on('loadedmetadata', function() { 
    var tracks = player.textTracks(), 
      chapterTrack; 

    for (var i=0; tracks.length > i; i++) { 
     if ('chapters' === tracks[i].kind) { 
      chapterTrack = tracks[i]; 
     } 
    } 

    console.log(chapterTrack.cues); 
}); 

https://github.com/videojs/video.js/blob/master/docs/guides/text-tracks.md#working-with-text-tracks

+0

Спасибо за ваш ответ. Объект 'textTracks' не возвращает элемент трека, хотя я могу видеть свой трек в его атрибуте' tracks_' с консоли при использовании 'console.log (vvplayer.textTracks());'. Этот атрибут теперь может быть закрытым. –

+1

Просто протестирован с video.js 5.14.0 и 5.14.1. Этот метод работает для меня, но похоже, что текстовые треки не всегда готовы, когда вызывается обратный вызов video.js, поэтому мне пришлось обернуть код в прослушиватель для события 'loadedmetadata', что заставило его работать надежно для меня, по крайней мере. Обновленный ответ с этим. – Hyddan

+0

Большое спасибо за ваши тесты и ваши качественные ответы, мне жаль, что у меня не было отладочного инструмента, предоставляющего информацию об асинхронных вызовах. –

 Смежные вопросы

  • Нет связанных вопросов^_^