Youtube API检测是否禁用自动播放

我已经使用Youtube API自动播放video,但我发现它只适用于PC而不是移动设备。 我做了一些google-ing并发现在移动设备上禁用了自动播放function。

没问题,我可以检测自动播放是否被禁用?? 或者,如果vidio处于-1状态,至少强制video显示你的播放按钮。

if(event.data == -1) { // show play button } 

看来,如果没有测试video并检查video加载后当前时间是否已经提前,就无法获取此信息。

它被要求作为现代化的一个function,但正如你从保罗爱尔兰的评论中看到的那样,你必须有一个video来检查。 看起来他们正试图将其添加到现代化的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 

不使用arg autoplay示例。 我只在非手机的PC上测试此解决方案,但您可以尝试以下代码:

现场例子

HTML

 

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(); }