3

我正在使用 Youtube Javascript API(iframe 版本)并且我正在使用 startend参数以便仅播放视频的一部分。虽然一切正常,但一旦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>

你们知道为什么会这样吗?

4

2 回答 2

0

以下是我如何让重播按钮在原始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);
      }
    }

  }

}
于 2017-02-24T04:35:47.703 回答
0

我已经尝试了上述解决方案但没有成功(错误控制台:“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" 来启动视频。当视频ENDED时,按钮#play设置为visibility:visible,点击事件使用player.loadVideoById对应参数。如果您不使用点击事件,视频将自动循环播放所需的开始/结束值。

来自 Youtube API 参考 = https://developers.google.com/youtube/iframe_api_reference?hl=fr#Getting_Started

于 2020-08-08T12:51:43.210 回答