Youtube Javascript API: начальный параметр не работает при воспроизведении

Я работаю с Youtube Javascript API (версия iframe) и использую параметры start и end для воспроизведения только части видео. Пока все работает нормально, при достижении end плеер останавливается (нормальное поведение). Однако при повторном нажатии на play игрок, похоже, не рассматривает вариант start. Он всегда перезапускает воспроизведение с начала видео. Однако он всегда заканчивается на определенном значении end.

<iframe frameborder="0" src="https://www.youtube.com/embed/5lGoQhFb4NM?autoplay=1&autohide=1&modestbranding=1&showinfo=0&controls=0&vq=hd720&rel=0&start=60&end=100" style="width: 100%; height: 400px;"></iframe>

Ребята, у вас есть идеи, почему это происходит?


person lkartono    schedule 28.07.2016    source источник
comment
Что ты в итоге сделал?   -  person httpete    schedule 31.08.2016
comment
@httpete Что ж, поскольку я изначально использовал Angular, в итоге я использовал github.com/brandly/angular -youtube-embed, что позволило перезагрузить iframe с помощью события youtube.player.ended. Если вам интересно, я опубликую свое решение здесь в качестве ответа, просто дайте мне знать :)   -  person lkartono    schedule 01.09.2016


Ответы (2)


Вот как мне удалось заставить кнопку повтора запускаться заново в исходное время start, а также запретить пользователям прокручивать за пределы начальной/конечной границы playerVars:

function onPlayerStateChange(event) {

  var isClip = playerOptions.playerVars.start && playerOptions.playerVars.end;
  var start = isClip ? playerOptions.playerVars.start : null;
  var end = isClip ? playerOptions.playerVars.end : null;

  if (event.data == YT.PlayerState.PLAYING) {
    if (isClip) {
      var currentTime = event.target.getCurrentTime();
      if (currentTime < start || currentTime > end) {
        event.target.seekTo(playerOptions.playerVars.start);
      }
    }

  }

}
person tyler.frankenstein    schedule 24.02.2017

Я пробовал вышеуказанное решение без успеха (консоль ошибок: playerOptions не определен)

Но спасибо за эту тему YouTube API - Циклическое видео между наборами время начала и окончания Мне удалось успешно получить параметры начала/окончания воспроизведения:

 <script>
// 5. The API calls this function when the player's state changes.
  var done = false;
  function onPlayerStateChange(event) {
   
    if (event.data == YT.PlayerState.ENDED) {
        var playButton = document.getElementById("play");
        playButton.addEventListener("click", function() {
            player.loadVideoById({
                  videoId: videoId,
                  startSeconds: startSeconds,
                  endSeconds: endSeconds
            });
        });
        document.getElementById("play").style.cssText = "visibility:visible";
    }  
  }
 </script>

Пояснения: в моем случае я использую кнопку id=play для запуска видео. Когда видео ЗАВЕРШЕНО, для кнопки #play устанавливается значение visible:visible, а событие click использует соответствующие параметры player.loadVideoById. Если вы не используете событие клика, видео автоматически зациклится с желаемыми значениями начала/конца.

Из справочника API Youtube = https://developers.google.com/youtube/iframe_api_reference?hl=fr#Getting_Started

person akal    schedule 08.08.2020