2017-08-07 109 views
-1

我有我试图提供参数到YouTube视频链接:混乱了解YouTube的循环参数

https://www.youtube.com/embed/wU4DgHHwVCc?autoplay=1&start=20&end=25&loop=1 

其他的一切完美的作品除了loop参数。视频不会循环播放。根据Google Developer's page

此参数在AS3播放器和IFrame嵌入中有有限的支持,可以加载AS3或HTML5播放器。目前,loop参数仅在与播放列表参数结合使用时才起作用。

所以,即使我的Chrome浏览器不使用AS3,因为我已禁用闪光灯,我加入了playlist参数添加到URL,看看会发生什么。现在

https://www.youtube.com/embed/wU4DgHHwVCc?autoplay=1&start=20&end=25&loop=1&playlist=wU4DgHHwVCc 

视频做循环,但两者startend参数被忽略,如URL指定的视频在00:00而不是00:20开始。

为什么我在不使用AS3播放器时需要指定playlist参数?

为什么它会忽略循环中的参数startend

操作系统:Ubuntu的LTS 16.04

Google Chrome版本60.0.3112.90(64位)

+0

多张贴:https://webapps.stackexchange.com/questions/108416/confusion-understanding-youtubes-loop-parameter – pnuts

+0

@pnuts你甚至读过这些帖子的评论?一旦我将它发布到webapp.se上,我被告知要在这里发布这个问题。由于缺乏积分,我无法移动帖子。 – zindarod

+0

在SE上多次发帖的习惯存在问题禁令。适当的程序DIY是复制(为了方便),粘贴在那里,在这里删除或标志,解释,并要求一个国防部迁移。 – pnuts

回答

0

看着的Youtube文档...你可以修改其显示i-frame API示例代码象下面这样得到一个循环影响。

的诀窍是:

  • 设置开始视频的20秒

  • 时间倾听播放开始事件onPlayerStateChange()功能,它本身开始5的timer处理秒倒数倒计时(即:毫秒)。

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

请在下面的示例代码中新建一个html页面。也可以test it here
代码在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> 
+0

你的代码工作正常,但我可以修改的唯一的东西是url,没有代码。 – zindarod

+0

_“我只能修改网址,没有代码”_然后Stackoverflow是错误的地方要问,因为这个网站是为**编程**问题不关于如何使用浏览器地址栏或网站的URL ...非常误导,要求在**编码**站点上,包括诸如'html5'和'AS3'等语言的标签,甚至可以引用开发者页面......但是没有代码允许。我浪费了我的时间,thnx。 –

+0

请参阅: [**站点规则第5点**](https://stackoverflow.com/help/on-topic)。 –