2014-10-08 55 views
0

我在使用iframe播放器在youtube視頻中顯示隱藏式標題的問題。Youtube隱藏式標題HTML5無法正常工作

下面是我使用的代碼:

<!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', { 
      height: '390', 
      width: '640', 
      videoId: 'M7lc1UVf-VE', 
      events: { 
      'onReady': onPlayerReady, 
      'onStateChange': onPlayerStateChange 
      } 
     }); 
     } 

     // 4. The API will call this function when the video player is ready. 
     function onPlayerReady(event) { 
     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. 
     function onPlayerStateChange(event) { 
     event.target.loadModule('captions'); 
     } 
    </script> 
    </body> 
</html> 

這裏有一個要點https://gist.github.com/khirakawa/0a81b3039a85b9875b59

這基本上是相同的示例代碼是這樣的API參考頁,https://developers.google.com/youtube/iframe_api_reference上。我在播放器狀態更改事件上致電event.target.loadModule('captions');

我無法找到有關加載字幕模塊的API參考頁面上的任何文件,但我沒有找到的代碼加載字幕模塊在此票https://code.google.com/p/gdata-issues/issues/detail?id=444

我沒有運氣嘗試這樣兩個Safari和Chrome 。

本地存儲值我看到YouTube上打開時是:

yt-remote-connected-devices {"data":"[]","expiration":1412291704974,"creation":1412205304974} 
yt-remote-device-id {"data":"27238aac-9452-4ae8-9b9f-1e29278e4d3b","expiration":1443741293991,"creation":1412205293992} 
yt-remote-load-account-screens {"data":"false","expiration":1443741304972,"creation":1412205304972} 
yt-remote-online-screens {"data":"[]","expiration":1412205364973,"creation":1412205304973} 

公告稱,其對字幕缺少的條目(我不記得什麼關鍵值分別爲,但我知道他們有兩個人一個用於啓用字幕,另一個用於字幕設置)。

如果您檢查cc_load_policy,但演示頁面(https://developers.google.com/youtube/youtube_player_demo)顯示隱藏式字幕,但這只是一個AS3選項。

這是在10月6日工作,但我不能得到它的工作了。我不確定youtube腳本本身是否發生了變化。

我嘗試將event.target.loadModule('captions');移動到onPlayerReady處理程序,但那也不起作用。

任何幫助將不勝感激。

回答

0

我能夠通過將cc_load_policy設置爲1來加載字幕。我也意識到,YouTube視頻網站上的示例視頻默認使用<embed>(讀取:Flash),而不是使用html5視頻播放器。

我不確定何時iframe播放器決定使用結束,但我確實找到了使用html5視頻標籤的視頻。即使如此,我必須將cc_load_policy設置爲1才能使其工作。 loadModuleunloadModule都不再適用。

我希望這有助於任何遇到此問題的人。

+0

我拉着我的頭髮試圖讓這個工作。該API於10/14更新,但在腳本中調用cc_load_policy不會加載字幕。你有沒有必要改變你的HTML標記呢? – Brian 2014-10-29 15:36:29

+0

我沒有更改HTML標記。你的代碼是什麼樣的? – 2014-10-31 22:17:43

+1

我發現它只能在字幕上傳到視頻時才能使用,而不能使用YouTube生成的字幕。儘管如此,文檔沒有提到這一點。 – Brian 2014-11-01 14:57:29