Непоследовательное поведение с loop = 1 в iframe - PullRequest
0 голосов
/ 24 января 2019

У меня очень разочаровывающий опыт, когда я пытаюсь сделать так, чтобы видео последовательно зацикливалось с использованием базового iframe.Я не взаимодействую с API через код.У меня просто есть iframe с autoplay=1,mute=1,loop=1.Я пытался использовать автономные видео, и я пробовал списки воспроизведения (с list= [ID] ,listType=playlist), и я продолжаю сталкиваться с той же проблемой.Иногда проигрыватель зацикливает видео, а иногда - нет.Каждый раз, когда я думаю, что я понял это, и я готов развернуть приложение, я проверяю его снова, и видео не удается зациклить.

Windows 10

Chrome 71.0.3578.98

Угловой 6.0.3

1 Ответ

0 голосов
/ 25 января 2019

Вы можете выбрать любой из этих вариантов:

  • Проверьте мой ответ , где я описал, как вы можете установить свой URL для создания списка воспроизведения (используяодин videoId) и имитировать цикл.

  • Используйте API-интерфейс проигрывателя YouTube iframe для настройки видео и (после окончания видео) ,вызовите функцию playVideo() для воспроизведения текущего видео =, следовательно, создавая цикл.

Это код: - к сожалению, вы не можете его увидетьздесь, но вы можете увидеть работающее jsfiddle 1

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

// Variables of the divs (where the YouTube iframe will load):
var player;

function onYouTubeIframeAPIReady() {

  // Div player:
  player = new YT.Player('player', {
    height: '360',
    width: '640',
    videoId: 'xPCZEoGJi_4',
    playerVars: {
      'autoplay': 1,
      'loop': 1,
      'mute': 1
    },
    events: {
      'onReady': onPlayerReady,
      'onStateChange': onPlayerStateChange
    }
  });

}

// 5. The API calls this function when the player's state changes.
function onPlayerStateChange(event) {

  // When the video ends, it will play again.
  // See: https://developers.google.com/youtube/iframe_api_reference?hl=en#Events
  if (event.data == YT.PlayerState.ENDED) {
    player.playVideo();
  }
}

// Div "player" - The API will call this function when the video player is ready.
function onPlayerReady(event) {
  event.target.playVideo();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<div id="player"></div>

1 Если видео (однажды загруженное) не воспроизводилось, необходимоВоспроизведение видео вручную - это связано с некоторыми ограничениями, которые имеет jsfiddle.

...