Плеер Bitmovin в Safari не загружает параметры выбора титров из медиа SourceConfig - PullRequest
0 голосов
/ 13 января 2020

Я использую проигрыватель Bitmovin (v8.15) в приложении Angular. Я настроил проигрыватель следующим образом и определил обратный вызов

this._player = new Player(this.videoPlayer.nativeElement, {
  ...bitmovinConfig,
  events: {
    // other code removed

    [SubtitleAdded]: () => this.triggerCaptionChange(),

    // other code removed
  },
});

triggerCaptionChange() {
  const captions = this._player.subtitles.list() as MediaCaption[];
  console.log(captions);
  // other code removed
}

MediaCaption в Chrome выглядит следующим образом (мы в основном расширяем интерфейс SubtitleTrack компании Bitmovin и добавили subType и sideloaded:

"id": "1",
"url": "https://...myurl_hidden.../DASH/5b95ba67-75bc-4127-bcaa-182a819f649c_WebVTT_eng.vtt",
"kind": "caption",
"lang": "en-US",
"subType": "subtitles",
"sideloaded": true,
"label": "English",
"enabled": true

Мы также загружаем плеер с конфигурацией следующим образом:

async onSourceChange(_: SourceConfig, current: SourceConfig) {  
  await this._player.load(current); 
  this.triggerAudioChange();
  this.triggerCaptionChange(); 

  ...
}

В Chrome current выглядит так:

"hls": "https://...urlhidden.../spmx/.../.../Dash/DASH_pertitle-dash.mpd",
"dash": "https://...urlhidden.../spmx/.../...Dash/DASH_pertitle-dash.mpd",
"drm": hidden,

"subtitleTracks": [
    {
      "enabled": "false",
      "id": "1",
      "url": "https://...urlhidden.../spmx/.../.../Dash/Subtitles_es_419.vtt",
      "kind": "caption",
      "label": "es-419",
      "lang": "es-419",
      "subType": "Subtitles",
      "sideloaded": true
    },
    {
      "enabled": "false",
      "id": "3",
      "url": "https://...urlhidden.../spmx/.../.../Dash/Captions_en_US.vtt",
      "kind": "caption",
      "label": "es-US",
      "lang": "en-US",
      "subType": "Captions",
      "sideloaded": true
    }
  ],
  "options": {
    "startTime": 1709
  }

В Safari current выглядит так (примечание, нет dash ключ):

"hls": "https://...urlhidden.../spmx/.../.../Apple/HLS_main.m3u8",
"drm": hidden,
"subtitleTracks": [
    {
      "enabled": "false",
      "id": "1",
      "url": "https://...urlhidden.../spmx/.../.../Apple/Subtitles_es-419.m3u8",
      "kind": "caption",
      "lang": "es-419",
      "lang": "es-419",
      "subType": "SUBTITLES",
      "sideloaded": true
    },
    {
      "enabled": "false",
      "id": "2",
      "url": "https://...urlhidden.../spmx/.../.../Apple/Subtitles_es_419.vtt",
      "kind": "caption",
      "lang": "es-419",
      "lang": "es-419",
      "subType": "Subtitles",
      "sideloaded": true
    },
    {
      "enabled": "false",
      "id": "4",
      "url": "https://...urlhidden.../spmx/.../.../Apple/Captions_en-US.m3u8",
      "kind": "caption",
      "lang": "en-US",
      "lang": "en-US",
      "subType": "SUBTITLES",
      "sideloaded": true
    }
    {
      "enabled": "false",
      "id": "5",
      "url": "https://...urlhidden.../spmx/.../.../Apple/Captions_en_US.vtt",
      "kind": "caption",
      "lang": "en-US",
      "lang": "en-US",
      "subType": "Captions",
      "sideloaded": true
    }
  ],
  "options": {
    "startTime": 1709
  }

В Chrome: журнал консоли дает мне массив с двумя элементами.

В Safari: я получаю пустой массив.

Ответы [ 2 ]

1 голос
/ 18 января 2020

Мне удалось связаться с Битмовином, и после некоторых обсуждений с ними мне пришлось загрузить модуль SubtitleNative (bitmovinplayer-subtitles-native). Убедитесь, что вы загрузили его после модуля Subtitles (bitmovinplayer-subtitles)

import BitmovinSubtitlesNativeModule from 'bitmovin-player/modules/bitmovinplayer-subtitles-native';
Player.addModule(BitmovinSubtitlesNativeModule);

Когда я это сделал, загруженные мной записи были загружены bitmovin '. Однако в Safari мои пользовательские поля «subType» и «sidedloaded», которые я добавил в subtitleTracks [], удаляются. (Мы используем их, чтобы отличить guish, какие дорожки были загружены с боковой стороны, а какие были загружены проигрывателем из манифеста.

Мы решили закодировать наши значения subType и sidedloaded в поле label of subtitleTracks. Теперь мы можем отобразить эти опции загруженных надписей в нашем пользовательском интерфейсе игрока.

Теперь проигрыватель Bitmovin вызывает мои обратные вызовы onCueEnter / Exit для меня, чтобы отобразить текст подписи!

0 голосов
/ 15 января 2020

Кажется, что есть пара опечаток в массиве subtitleTracks для версии HLS, с фиксированными опечатками, это будет результирующий массив:

[
    {
      "enabled": false,
      "id": "1",
      "url": "https://...urlhidden.../spmx/.../.../Apple/Subtitles_es_419.m3u8",
      "kind": "caption",
      "lang": "es-419",
      "label": "es-419",
      "subType": "SUBTITLES",
      "sideloaded": true
    },
    {
      "enabled": false,
      "id": "2",
      "url": "https://...urlhidden.../spmx/.../.../Apple/Subtitles_es_419.vtt",
      "kind": "caption",
      "lang": "es-419",
      "label": "es-419",
      "subType": "Subtitles",
      "sideloaded": true
    },
    {
      "enabled": false,
      "id": "4",
      "url": "https://...urlhidden.../spmx/.../.../Apple/Captions_en_US.m3u8",
      "kind": "caption",
      "lang": "en-US",
      "label": "en-US",
      "subType": "SUBTITLES",
      "sideloaded": true
    },
    {
      "enabled": false,
      "id": "5",
      "url": "https://...urlhidden.../spmx/.../.../Apple/Captions_en_US.vtt",
      "kind": "caption",
      "lang": "en-US",
      "label": "en-US",
      "subType": "Captions",
      "sideloaded": true
    }
  ]

Я создал образец Angular приложение с HLS и DA SH и substitleTracks, ссылка: https://stackblitz.com/edit/bitmovin-player-angular-app?file=src%2Fapp%2Fvideo-player%2Fvideo-player.component.ts, вы можете проверить, что сообщение на консоль состоит из нескольких элементов субтитров в обоих Chrome (если вы раскомментируете sh источник) и Safari

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...