我在让 YouTube 嵌入工作时遇到一些问题。
我正在使用 YouTube API 加载视频。在加载的视频之上,我有一个自定义控件<div>
(透明),只有一个播放按钮(一个<img>
)。这样做是为了将默认的 YouTube 播放器隐藏在一个播放按钮后面,该按钮与网站上的其余设计一起使用。
覆盖整个加载的<div>
iFrame,因此播放器本身不可点击 - 我使用点击事件<div>
来启动视频:
// Inside onYouTubePlayerAPIReady():
var player = new YT.Player(playerId, {
height: height,
width: '100%',
videoId: videoId,
playerVars: {
html5: '1',
controls: '0',
rel: '0',
showinfo: '0',
modestbranding: '1',
theme: 'light',
color: 'white',
wmode: 'transparent',
suggestedQuality: "large"
}
});
$(".youtube-player-controls").bind("click", function(e){
if (!player || !player.getPlayerState) return false;
if (player.getPlayerState() == YT.PlayerState.PLAYING) player.pauseVideo();
else player.playVideo();
return false;
});
在 iPhone 上运行良好,但在 iPad(似乎也是 Android)上,视频切换到视频的第一帧,但随后停在缓冲状态(通过 检查player.getPlayerState()
)。
我尝试开始播放player.loadVideoById()
也不起作用的视频(同样的错误)。
如果我删除了覆盖控件<div>
,从而允许用户实际点击视频,它就可以正常工作。
关于如何使用 Javascript API 播放视频的任何建议?
编辑:
我稍微更改了嵌入代码,即添加了Force HTML5 youtube videohtml5=1
中所述的代码。这将嵌入式 iFrame 的内容更改为使用 HTML5 播放器,但并没有解决问题。
我试着看看它是否可以按照http://developer.apple.com/library/safari/#documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html中的描述工作。