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

5

我使用了Youtube API自动播放视频,但发现在电脑上可以正常工作,但在移动设备上无法正常工作。经过谷歌搜索,我发现自动播放功能在移动设备上被禁用了。

现在的问题是,我能否检测到自动播放是否被禁用?或者至少强制视频显示Youtube播放按钮,如果视频处于状态-1。

即:

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

请投票支持自动播放检测:https://issuetracker.google.com/u/0/issues/79307168 - pablo
2个回答

0

一个不使用autoplay参数进行自动播放的示例。我只在PC上测试过这个解决方案,但你可以尝试这段代码:

LIVE EXAMPLE

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

0

看起来似乎没有办法在不测试视频的情况下获取这些信息,并检查视频是否在加载后已经播放到了当前时间。

这个功能曾经被要求加入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

哦,我本来希望有一个简单/内置的解决方案来解决这个问题。 - Maciej Cygan
很抱歉,不行。你可以在那里放置播放按钮,当视频开始播放时,再将其移除。使用 onPlayerStateChange 回调函数。这样就可以处理所有播放事件 - 无论是自动播放还是手动播放。请参见 https://dev59.com/Tl_Va4cB1Zd3GeqPUIZi - RichieAHB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接