Browser 理解YouTube的困惑';s循环参数

Browser 理解YouTube的困惑';s循环参数,browser,youtube,Browser,Youtube,我有一个YouTube视频链接,我正在尝试向其提供参数: https://www.youtube.com/embed/wU4DgHHwVCc?autoplay=1&start=20&end=25&loop=1 除了循环参数外,其他所有功能都工作正常。视频没有循环。根据: 该参数在AS3播放器和IFrame嵌入中的支持有限,IFrame嵌入可以加载AS3或HTML5播放器。目前,loop参数仅在与playlist参数一起使用时在AS3播放器中有效 因此,即使我的Chrom

我有一个YouTube视频链接,我正在尝试向其提供参数:

https://www.youtube.com/embed/wU4DgHHwVCc?autoplay=1&start=20&end=25&loop=1
除了
循环
参数外,其他所有功能都工作正常。视频没有循环。根据:

该参数在AS3播放器和IFrame嵌入中的支持有限,IFrame嵌入可以加载AS3或HTML5播放器。目前,loop参数仅在与playlist参数一起使用时在AS3播放器中有效

因此,即使我的Chrome浏览器没有使用AS3,因为我已经禁用了flash,我还是在URL中添加了
playlist
参数,看看会发生什么

https://www.youtube.com/embed/wU4DgHHwVCc?autoplay=1&start=20&end=25&loop=1&playlist=wU4DgHHwVCc
现在,视频确实会循环,但
start
end
参数都被忽略,视频从
00:00
开始,而不是URL中指定的
00:20

当我不使用AS3播放器时,为什么需要指定
播放列表
参数?

为什么忽略循环上的
开始
结束
参数?

操作系统:Ubuntu 16.04 LTS


Chrome版本:60.0.3112.90(64位)

查看Youtube文档。。。您可以修改下面显示的示例代码,以获得循环效果

诀窍是:

  • 将视频的开始时间设置为20秒

  • 收听播放开始事件并使用
    onPlayerStateChange()
    函数进行处理,该函数本身会启动一个
    计时器
    ,进行5秒的倒计时(即:5000毫秒)

  • 当计时器达到零时,它会触发函数handleVideo(),该函数本身会启动一个5秒的新计时器。然后自动在视频的时间线中搜索回20秒(开始时间)。
    计时器现在创建一个反馈循环

在新的html页面中尝试下面的示例代码。也可以。
代码在Windows/Chrome上进行了测试

<!DOCTYPE html>
<html>
  <body>
    <!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
    <div id="player"></div>

    <script>
      // 2. This code loads the IFrame Player API code asynchronously.
      var tag = document.createElement('script');

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

      // 3. This function creates an <iframe> (and YouTube player)
      //    after the API code downloads.
      var player;
      function onYouTubeIframeAPIReady() 
      {
        player = new YT.Player('player', 
        {

              width: '100%',
              height: '800',
              videoId: 'wU4DgHHwVCc',
              startSeconds:20,
              //endSeconds:25,
              events: 
              {
                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange
              }
        });
      }

      // 4. The API will call this function when the video player is ready.
      function onPlayerReady(event) 
      {
        event.target.seekTo(20);
        event.target.playVideo();
      }

      // 5. The API calls this function when the player's state changes.
      //    The function indicates that when playing a video (state=1),
      //    the player should play for six seconds and then stop.
      var done = false;
      function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.PLAYING && !done) {
          setTimeout(handleVideo, 5000);
          done = true;
        }
      }

      // Custom function to LOOP
      // Moves playhead back to 20 seconds
      function handleVideo() 
      {
        setTimeout(handleVideo, 5000);
        player.seekTo(20);
      }

    </script>
  </body>
</html>

// 2. 此代码异步加载IFrame播放器API代码。
var tag=document.createElement('script');
tag.src=”https://www.youtube.com/iframe_api";
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
// 3. 此函数用于创建(和YouTube播放器)
//API代码下载后。
var播放器;
函数onyoutubeiframeapiredy()
{
player=新的YT.player('player',
{
宽度:“100%”,
高度:'800',
videoId:'WU4DGHWVCC',
开始秒:20,
//完秒:25,,
活动:
{
“onReady”:onPlayerReady,
“onStateChange”:onPlayerStateChange
}
});
}
// 4. 当视频播放器准备就绪时,API将调用此函数。
函数onPlayerReady(事件)
{
事件。目标。seekTo(20);
event.target.playVideo();
}
// 5. 当播放器的状态改变时,API调用此函数。
//该功能指示播放视频时(状态=1),
//玩家应该玩六秒钟,然后停下来。
var done=false;
函数onPlayerStateChange(事件){
如果(event.data==YT.PlayerState.PLAYING&&!done){
设置超时(handleVideo,5000);
完成=正确;
}
}
//要循环的自定义函数
//将playhead移回20秒
函数handleVideo()
{
设置超时(handleVideo,5000);
球员希克托(20);
}

这很简单。要循环单个视频,您需要两次。
试试这个。
请注意,对于任何可能在中断循环时链接它们的视频,“rel”必须设置为“0”


我制作了一个页面,用于测试您是否喜欢测试。

您的代码运行良好,但我唯一可以修改的是url,没有代码。“我只能修改url,没有代码”然后Stackoverflow是一个错误的地方,因为该网站是用于编程的问题,而不是关于如何使用浏览器地址栏或网站url。。。在编码网站上询问,包括像
html5
AS3
这样的语言标签,甚至引用开发者的页面,都会产生误导性。。。但是没有代码被允许。我浪费了我的时间,thnx。看:这里。我已经在webapps.SE上发布了相同的问题,并且被告知在这里发布。这适用于代码大小有限的项目。除了这一个youtube功能外,一切都很正常。操纵url是获得所需功能并保持代码大小限制的最佳方法。无论如何,谢谢你的时间。为什么不用这个代码制作一个页面,然后与公众分享这个URL,而不是使用原始的Youtube呢?您无法仅通过地址栏获得无限循环。这就是API存在的原因,用于通过代码自定义播放。您忘记添加
start
end
参数。我没有说视频没有循环,我说它忽略了循环中的参数。@pnuts你读过这些帖子上的评论吗?当我在webapp.se上发布这个问题时,有人告诉我把它发布在这里。由于缺少分数,我无法迁移帖子。