Как работает cc_load_policy в API-интерфейсе iframe Player youtube для отображения субтитров? - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь использовать параметр 'cc_load_policy' в плеере youtube API-iframe.И я не могу заставить его работать на моей странице.

Как видите, я указываю cc_load_policy на 1, чтобы субтитры всегда отображались, а cc_lang начинался с 'en' (так какмои субтитры на английском).


var player;
function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
        height: '100%',
        width: '100%',
        videoId: /*MY YOUTUBE ID*/,
        playlist: /*MY YOUTUBE ID */,
        playerVars:{
           'autoplay': 1,
           'controls': 0,
           'disablekb': 0,
           'fs':0,
           'modestbranding':0,
           'rel':0,
           'hd':1,
           'autohide': 0,
           'wmode': 'transparent',
           'showinfo': 0,
           'loop' : 1,
           'cc_load_policy' : 1,
           'cc_lang_pref' : 'en',
           'iv_load_policy' : 3
       },
       events: {
          'onReady': onPlayerReady,
          'onStateChange' : onStateChange
       }
    });
}

function onPlayerReady(event) {event.target.playVideo();}
function onStateChange(evt){
   if (evt.data === YT.PlayerState.ENDED) {
       player.playVideo(); 
   }
}

Если URL, который обычно код скопировал и вставил на вкладку, субтитры работают отлично, однако в пределах iframe, автоматически сгенерированного API, он не работает.

Кто-нибудь знает, в чем моя ошибка?Может ли Api иметь ошибку или неизвестное ограничение для меня?

Я прочитал документацию несколько раз и не могу найти объяснение своей проблемы.

1 Ответ

0 голосов
/ 11 февраля 2019

Я заметил, что вы установили значение autoplay на 1, и во время моих тестов кажется, что автозапуск не будет работать, если видео не отключено.


Я создал это работает jsfiddle с вашими настройками API, и я не могу точно сказать, связана ли проблема с вашим конкретным videoId, но одно можно сказать наверняка: если вы хотите, чтобы ваше видео воспроизводилось автоматически, я думаю, вам нужно установитьзначение от mute до 0, чтобы оно работало.

Также было бы полезно, если вы проверяете, что videoId, который вы хотите использовать в настройках API, имеет субтитры (и на языке, который вы используете.намереваться показать) .

Другое изменение, которое я сделал в настройках API, было прокомментировать значения width и height - хотя эти значения не являются проблемой.

Используемый videoId в этом примере взят из видео:

Описание S4G Consulting con nuestro # S4GMood

Вот код- просто то, что вы не увидите работу этого кода здесь, потому что переполнение стека имеет определенные ограниченияtions для воспроизведения видео на YouTube ...

var tag = document.createElement('script');

tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

var player;

function onYouTubeIframeAPIReady() {
  player = new YT.Player('player', {
    /*height: '100%',
    width: '100%',*/
    videoId: 'cpx2C13kAqw',
    playlist: 'cpx2C13kAqw',
    playerVars: {
      'autoplay': 1,
      'mute': 1,
      'controls': 0,
      'disablekb': 0,
      'fs': 0,
      'modestbranding': 0,
      'rel': 0,
      'hd': 1,
      'autohide': 0,
      'wmode': 'transparent',
      'showinfo': 0,
      'loop': 1,
      'cc_load_policy': 1,
      'cc_lang_pref': 'en',
      'iv_load_policy': 3
    },
    events: {
      'onReady': onPlayerReady,
      'onStateChange': onStateChange
    }
  });
}

function onPlayerReady(event) {
  event.target.playVideo();
}

function onStateChange(evt) {
  if (evt.data === YT.PlayerState.ENDED) {
    player.playVideo();
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<div id="player"></div>
...