【问题标题】:I am struggling with setting up the loop for youtube api by using my code each time loop video is loading.I have put only one video in loop每次加载循环视频时,我都在努力通过使用我的代码为 youtube api 设置循环。我只将一个视频放入循环中
【发布时间】:2016-10-05 09:26:20
【问题描述】:

这是我的视频 http://dynamitechefs.ch/
我已将一个视频循环播放。每次都加载视频。如何删除视频加载?
这是我的代码

 function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
        height: mediaParams['height'],
        width: mediaParams['width'],
        videoId: mediaParams['v'],
        playerVars: {
            controls: 1,
            showinfo: 0 ,
            startAt:1,
            rel:0,
            loop:1,
            playlist : 'BmAL33M0jcI'    
        },
        events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
        }
    });
}

提前致谢。

【问题讨论】:

    标签: javascript youtube youtube-api playlist youtube-iframe-api


    【解决方案1】:

    根据 IFrame API Player Parameters 的documentation,当您播放单个视频播放器时,设置为 1 会导致播放器反复播放初始视频。对于播放列表播放器(或自定义播放器),播放器会播放整个播放列表,然后从第一个视频重新开始。

    请注意,目前,循环参数仅适用于 与播放列表参数结合使用时的 AS3 播放器。至 循环播放单个视频,将循环参数值设置为 1 并设置 将播放列表参数值设置为已在 播放器 API 网址:

     https://www.youtube.com/v/VIDEO_ID? > version=3
     &loop=1  
     &playlist=VIDEO_ID
    

    如需了解更多信息,请使用此demo 了解 IFrame API 的不同参数的工作原理。

    【讨论】:

      【解决方案2】:

      您可以使用 player.seekTo 函数在视频接近结尾(即 99% 完成)时寻找视频的开头,以将播放器缓冲区保留在内存中并防止重新加载。你可以在下面的代码中看到这个例子:

      var player;
      // Callback for when the YouTube iFrame player is ready
      function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          // Set Player height and width
          height: '390',
          width: '640',
          // Set the id of the video to be played
          videoId: 'Rykmwn0SMWU',
          // Setup event handelers
          events: {
            'onReady': onPlayerReady,
          }
        });
      };
      
      function onPlayerReady() {
      var interval = setInterval(function(){
        console.log(player.getCurrentTime() / player.getDuration())
        if (player.getCurrentTime() / player.getDuration()  > .99) {
          player.seekTo(0)
        }
      },500);
      }
      

      【讨论】:

      • 我试过这段代码。但它仍然显示相同..我认为它不是从缓冲区播放..
      • 您可能必须根据视频的长度更改 .99 值,或者(理想情况下)您将有一种更复杂的方法来计算要制作的视频的最后一秒的值确定这有效。尝试将其更改为更保守的值(例如 .9)并确保代码中没有任何错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-19
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      相关资源
      最近更新 更多