Android 4.3上的YouTube嵌入式播放器

时间:2014-01-23 11:33:37

标签: android html5 youtube youtube-api html5-video

我正在尝试将YouTube播放器嵌入我的网页,如下所示。

我遇到的问题是,播放器最初加载并播放第一个视频,但是当调用.loadVideoById时,播放器会加载视频(视频标题文本发生变化),但之后会卡在黑屏上在玩。

这只发生在Android上,使用HTML5播放器(Chrome和默认浏览器),因为我的手机更新到Android 4.3,之前在4.2上已经很好了。

通过桌面浏览器可以正常工作,其中useragent设置为伪造Android。

我也尝试了其他两款Android手机,两者都有完全相同的问题(两者都是4.3)。我也使用Google Code Playground示例Youtube播放器间歇性地获得相同的行为。

如果我连接ADB Chrome远程调试器,我可以看到播放器陷入缓冲状态,尽管正在按预期下载视频片段。

有没有人经历过类似的事情?或者有任何建议吗?

代码:

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

2。此代码异步加载IFrame Player 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>

1 个答案:

答案 0 :(得分: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
                }

            });