2014-01-23 62 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 
       } 

      });