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で説明されているように機能するかどうかを試してみました。