Подписи Chromecast WebVTT на приемнике по умолчанию

Итак, я пытаюсь настроить скрытые субтитры для chromecast, используя приложение отправителя chrome по умолчанию, в соответствии с документами это должно быть возможно, как показано здесь. Я не могу понять, почему мой код не работает. Он почти идентичен приведенному примеру кода.
Снипер, вероятно, не работает, потому что он слишком изолирован, см. здесь, на обычной HTML-странице: Нажмите!
Сначала нужно подключить свой хромкаст с помощью верхней кнопки, а затем нажать "загрузить видео".

My code:

var suburl = 'https://cors-anywhere.herokuapp.com/brenopolanski.com/html5-video-webvtt-example/MIB2-subtitles-pt-BR.vtt';
var mediaurl = 'https://cors-anywhere.herokuapp.com/www.w3schools.com/html/mov_bbb.mp4';
var mediaInfo;
window['__onGCastApiAvailable'] = function(isAvailable) {
  if (isAvailable) {
    initializeCastApi();
  }
};
initializeCastApi = function() {
  cast.framework.CastContext.getInstance().setOptions({
    receiverApplicationId:
      chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID
  });
  var englishSubtitle = new chrome.cast.media.Track(1, // track ID
  chrome.cast.media.TrackType.TEXT);
  englishSubtitle.trackContentId = suburl;
  englishSubtitle.trackContentType = 'text/vtt';
  englishSubtitle.subtype = chrome.cast.media.TextTrackType.SUBTITLES;
  englishSubtitle.name = 'English Subtitles';
  englishSubtitle.language = 'en-US';
  englishSubtitle.customData = null;

  mediaInfo = new chrome.cast.media.MediaInfo(mediaurl);
  var textTrackStyle = new chrome.cast.media.TextTrackStyle();
  textTrackStyle.foregroundColor = '#80FF0000';

  mediaInfo.contentType = 'video/mp4';
  mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();
  mediaInfo.customData = null;
  mediaInfo.streamType = chrome.cast.media.StreamType.BUFFERED;
  mediaInfo.textTrackStyle = textTrackStyle
  mediaInfo.duration = null;
  mediaInfo.tracks = [englishSubtitle];
  mediaInfo.activeTrackIds = [1];
};

function loadVideo() {
  var castSession = cast.framework.CastContext.getInstance().getCurrentSession();
  var request = new chrome.cast.media.LoadRequest(mediaInfo);
  castSession.loadMedia(request).then(
  function() { console.log('Load succeed'); },
  function(errorCode) { console.log('Error code: ' + errorCode); });
}
.cast-button, .load-button {
  max-width: 50px;
  max-height: 50px;
}
<!DOCTYPE html>
<html>
<head>
<title>Sample chromcast</title>
</head>
<body>
<div class="cast-button">
  <google-cast-launcher></google-cast-launcher>
</div>
<button class="load-button" onclick="loadVideo()"> Load video </button>

<script src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1"></script>
</body>
</html>


person bart    schedule 27.11.2018    source источник


Ответы (1)


После долгих поисков я все еще не могу точно определить проблему. Однако я наткнулся на эту замечательную оболочку для ChromeCast SDK, которая поддерживает субтитры: https://github.com/Fenny/ChromecastJS/

Включая эту демонстрацию: https://fenny.github.io/ChromecastJS/demo/index.html

Надеюсь, это может помочь кому-то еще!

person bart    schedule 05.02.2019
comment
Работает по простому сценарию: файлы с сервера сохранения; Заголовки CORS для каждого источника. субтитры находятся в отдельном потоке WebVTT. Не делает ничего из очень тяжелой работы, необходимой, чтобы выйти за рамки этого. - person Robin Davies; 18.02.2019