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

Youtube API detect if autoplay is disabled

本文关键字:是否 自动播放 API 检测 Youtube      更新时间:2023-09-26

我使用Youtube API自动播放视频,但我发现它只适用于PC,而不适用于移动设备。我在谷歌上搜索了一下,发现自动播放功能在移动设备上被禁用了。

不,问题是,我能检测到自动播放是否被禁用吗??。或者,如果vidio处于-1状态,至少可以强制视频显示youtoube播放按钮。

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

如果不测试视频并检查加载后视频的当前时间是否提前,似乎无法获得这些信息。

它被要求作为modernizr的一个功能,但正如你从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

在不使用arg 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();
          }