2014-01-23 117 views
2

我想將YouTube播放器嵌入到我的網頁中,如下所示。Android嵌入式播放器4.3

我遇到的問題是,玩家最初加載並播放了第一個視頻,但是當調用.loadVideoById時,播放器會加載視頻(視頻標題文本更改),但會卡在黑屏上而不是玩。

這隻發生在Android上,因爲將手機更新爲Android 4.3之後,HTML5播放器(包括Chrome和默認瀏覽器)都已經在4.2版本上正常運行。

它通過使用useragent設置爲僞裝Android的桌面Chrome工作正常。

我也嘗試過其他兩款Android手機,並且兩者都有完全相同的問題(均爲4.3)。我也使用Google Code Playground Example Youtube Player間歇性地獲得相同的行爲。

如果我連接ADB Chrome遠程調試器,我可以看到播放器卡在緩衝狀態,儘管按預期正在下載視頻片段。

有沒有人遇到類似的東西?或者有什麼建議?

代碼:

<div id="ytwrapper"> 
<div id="player" > 
</div> 
</div> 
<script type="text/javascript"> 
var ytplayer; 

2.此代碼加載iFrame播放器API代碼以異步方式。

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

3.這個函數創建API代碼下載後(和YouTube播放器)。

function onYouTubeIframeAPIReady() 
{ 
    ytplayer = new YT.Player('player', { width: 1280, 
          height: 720, 
          videoId: 'M7lc1UVf-VE', 
          frameborder:0, 
       events: 
          { 
          "onReady": onYouTubePlayerReady, 
        "onStateChange": onytplayerStateChange, 
        "onPlaybackQualityChange": onYTQchange, 
       "onError": onYTError 
         } 
          }); 
} 

function loadnextvid() 
{ 
    ytplayer.loadVideoById(vids[currentvid],0, vqs[currentvid]); 
} 

function onYouTubePlayerReady(playerId) 
{ 
loadnextvid(); 
} 
</script> 

回答

4

我有同樣的問題。看起來目前解決此問題的唯一方法是銷燬和重新創建播放器實例。

我在這裏找到這個解決方案:https://code.google.com/p/gdata-issues/issues/detail?id=5273

爲我工作的是Android 4.4,iOS7。

if (player != null) { 
    player.destroy(); 
    player = null; 
} 


player = new YT.Player('divplayer', { 
       width: '100%', 
       height: '100%', 
       videoId: video_id, 

       playerVars: { 'autoplay': 0, 'playerapiid': 'ytPlayer', 'border': 0, 'hd': 1, 'version': 3, 'rel': 0, 'color' : 'red' }, 


       events: { 
        'onReady': onPlayerReady 
       } 

      });