视频自动播放(包括 YouTube 的 autoplay=1)在 iOS Safari 上不起作用。Apple 和大量博客文章都详细记录了这一点。然而,这确实会导致使用 YouTube 视频的自定义控件出现问题,我无法在任何地方找到明确的是/否答案。如果我使用简单的 HTML5 视频标签,就没有问题 - 但我真的宁愿不必为所有不同平台编码所有视频。
我需要完成的是:
- 显示封面图像(平面 PNG,顶部带有播放图标)。
- 用户单击封面图片,该图片将替换为开始播放的 YouTube 视频。
从用户的角度来看,这不是自动播放,因为它是通过点击启动的。然而,在所有非 Flash 设备上,YouTube 嵌入都显示在 iframe 中,从而导致视频有效地加载和自动播放(或者至少,我认为是这样)。有谁知道这个问题的任何解决方法?
这个片段说明了这个问题。它可以在例如 FireFox 中工作,但在 iOS Safari 上它只是显示加载指示器,然后以黑屏结束。
如果我添加“apple-mobile-web-app-capable”元标记并从主屏幕启动该网站,视频就会正确播放。
<div id="movieContainer" style="width: 768px; height: 432px; border: 1px solid #cccccc;">Initializing player API...</div>
<div id="status">Initializing player API...</div>
<button onclick="player.playVideo();">Play</button>
<script>
// Load the IFrame Player API code asynchronously.
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var playerAPIIsLoaded = false;
function onYouTubePlayerAPIReady()
{
playerAPIIsLoaded = true;
document.getElementById("status").innerHTML = "Player API initialized!";
}
var player = null;
function initMovie()
{
document.getElementById("status").innerHTML = "Loading video..."
player = new YT.Player(
'movieContainer',
{
height: '432'
, width: '768'
, playerVars: { 'autoplay': 0, 'controls': 2, 'rel': 0, 'showinfo': 0 }
, videoId: 'MwnZr4VJQPQ'
, events: { 'onReady': function (event) { document.getElementById("status").innerHTML = "Video loaded!";/*event.target.playVideo();*/ } }
}
);
}
window.onload = initMovie;
</script>