2017-08-07 70 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)。 –