Динамически меняйте подписи к видео с помощью addTextTrack()

Я пытаюсь создать что-то вроде видеогалереи, в которой вы можете выбрать видео для отображения, щелкнув его миниатюру. Сейчас я нахожусь на этапе загрузки соответствующих субтитров для выбранного видео. Благодаря Google я понимаю, что у videojs есть метод, который помогает мне, называемый addTextTrack(), но, к сожалению, для него нет хорошего образца или документации. Ведь я пытался найти его параметры и поведение, читая коды video.dev.js. но, насколько я понимаю, у этого метода всего три параметра (вид, метка, язык), и я не понял вот что: Как я могу настроить src для загрузки файла субтитров. Я думаю это ошибка, и она не работает должным образом, и я хочу сообщить об этом, если вы согласны со мной.

Следующий код добавляет значок cc в проигрыватель, но не показывает субтитры (как это может быть показано, если я не сказал ему URL-адрес для загрузки)

var myPlayer = videojs('video-id');
myPlayer.addTextTrack('captions', 'En', 'English');

Я проверил метод addTextTrack videojs 5.0.0, и существенных изменений не было.


person mahyard    schedule 05.10.2015    source источник


Ответы (2)


Примерно через месяц без ответа на мой вопрос я до сих пор не знаю, почему addTextTrack() не работает должным образом. Но слава богу, я нашел способ добиться своей цели:

Для динамического изменения всех текстовых дорожек

var oldTracks = player.remoteTextTracks();
var i = oldTracks.length;
while (i--) {
  player.removeRemoteTextTrack(oldTracks[i]);
}
myNewTracks.forEach(function(track) {
  player.addRemoteTextTrack(track);
});
person mahyard    schedule 07.11.2015
comment
Привет, спасибо за ваш пример. Я столкнулся с той же проблемой. Я все еще не уверен, как загрузить правильную дорожку URL-адреса src, может быть, у вас есть более длинный пример? Спасибо! - person Lucien S.; 20.12.2017
comment
добро пожаловать @rodolphe, извините, у меня нет более длинного примера - person mahyard; 21.12.2017

Текстовая дорожка никогда не обновлялась динамически, и после долгих поисков я нашел решение своей проблемы. Когда я меняю источник видео, я заменяю текстовую дорожку и устанавливаю для нее режим = отображение:

let player = videojs('first-player');
player.addRemoteTextTrack({
            kind: 'captions',
            src: 'my-track-path.vtt',
            mode: 'showing'
}, false);
person Numb3rs    schedule 20.07.2021
comment
Спасибо, что поделились этим. хотя, боюсь, я не могу проверить, работает он или нет. Я надеюсь, что люди найдут это полезным. - person mahyard; 20.07.2021