我使用了Youtube API自动播放视频,但发现在电脑上可以正常工作,但在移动设备上无法正常工作。经过谷歌搜索,我发现自动播放功能在移动设备上被禁用了。
现在的问题是,我能否检测到自动播放是否被禁用?或者至少强制视频显示Youtube播放按钮,如果视频处于状态-1。
即:
if(event.data == -1) {
// show play button
}
我使用了Youtube API自动播放视频,但发现在电脑上可以正常工作,但在移动设备上无法正常工作。经过谷歌搜索,我发现自动播放功能在移动设备上被禁用了。
现在的问题是,我能否检测到自动播放是否被禁用?或者至少强制视频显示Youtube播放按钮,如果视频处于状态-1。
即:
if(event.data == -1) {
// show play button
}
一个不使用autoplay
参数进行自动播放的示例。我只在PC上测试过这个解决方案,但你可以尝试这段代码:
HTML
<div id="player"></div>
JS
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'M7lc1UVf-VE',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING) {
} else {
}
}
function stopVideo() {
player.stopVideo();
}
看起来似乎没有办法在不测试视频的情况下获取这些信息,并检查视频是否在加载后已经播放到了当前时间。
这个功能曾经被要求加入modernizr,但正如this comment中Paul Irish所说,你必须拥有一个视频才能进行检查。看起来他们正在尝试将其添加到modernizr的v3版本中。
因此,基本上是可行的,他的伪代码应该可以让你开始工作。基本上前四个点已经完成了,你只需要实现最后两个点即可。
create a video element
set video element src to something
add autoplay attribute to it
add element to the dom
bind to that event (something metadata soemthing) that fires when its buffered some
setTimeout after it fires and see if currentTime is > 0
onPlayerStateChange
回调函数。这样就可以处理所有播放事件 - 无论是自动播放还是手动播放。请参见 https://dev59.com/Tl_Va4cB1Zd3GeqPUIZi - RichieAHB