【问题标题】:Youtube API detect if autoplay is disabledYoutube API 检测是否禁用自动播放
【发布时间】:2014-11-17 14:18:09
【问题描述】:

我使用 Youtube API 自动播放视频,但我发现它只能在 PC 上正常工作,而不是在移动设备上。我做了一些谷歌搜索,发现移动设备上禁用了自动播放功能。

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

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

【问题讨论】:

标签: javascript android ios youtube-api


【解决方案1】:

如果不对您的视频进行测试并检查视频在加载后的当前时间是否提前,似乎无法获取此信息。

modernizr 中要求将其作为一项功能,但正如您从 Paul Irish 的 this comment 中看到的那样,您必须有一个视频才能查看。看起来他们正试图将其添加到 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 回调。然后,这将处理所有播放事件 - 无论是否自动播放。见stackoverflow.com/questions/8950146/…
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 2017-04-21
    • 2012-09-22
    • 2018-05-25
    • 2018-07-14
    相关资源
    最近更新 更多