【问题标题】:Detect if Vimeo video will autoplay检测 Vimeo 视频是否会自动播放
【发布时间】:2016-12-03 03:42:20
【问题描述】:

我正在使用 Vimeo 及其自动播放功能。问题是自动播放在移动设备上不起作用,我有一些计时器假设视频确实自动播放。我知道视频播放时会触发一个事件,但我似乎可以找到任何关于如何判断自动播放是否正常工作的信息。有没有办法判断自动播放是否以编程方式工作。我想做的是这样的..

自动播放是否可以在此设备上运行或自动播放是否启动? 如果没有忘记计时器并立即显示所有内容。

【问题讨论】:

    标签: vimeo vimeo-api vimeo-player


    【解决方案1】:

    正如您所说,Vimeo Player 的自动播放功能在移动设备上不起作用(这在this article 中得到了通知),而且这些设备上的 JavaScript API 似乎也被破坏了。您仍然可以使用Vimeo's Player JavaScript API 在非移动设备上操作视频并推断移动设备是否支持 JavaScript API。

    确定自动播放是否适用于非移动设备

    要检查这些设备上是否已开始自动播放,vimeo 播放器是否正常工作,您可以在页面就绪时将play 事件与player.getPaused() 结合使用。

    <html>
      <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <script src="https://player.vimeo.com/api/player.js"></script>
      </head>
    <body>
      
      <iframe id="player" src="https://player.vimeo.com/video/78716964?autoplay=1&title=0&byline=0&portrait=0" width="640" height="360" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
      
      
      <script>
        var player = new Vimeo.Player($('#player'));
        
        var state = { autoplaying : false };
        
        player.on('play', () => {
          state.autoplaying = true;
          player.off('play');
        });
        
        player.getPaused().then((paused) => {
          var playing = !paused;
          state.autoplaying = state.autoplaying || playing;
        });
      </script>
    </body>
    </html>

    确定自动播放是否适用于移动设备:

    由于 JavaScript API 已损坏,目前还没有明确的方法可以在移动设备上确定这一点。您可以尝试通过调用任何 API 方法来检测 JavaScript API 是否启用并等待承诺结果。如果短时间内没有结果,那么您可以说 API 不工作。所以,假设自动播放不起作用。

    var player = new Vimeo.Player($('#player'));
    
    var state = { 
      autoplaying : false,
      apiEnabled : null
    };
    
    player.on('play', () => {
      state.autoplaying = true;
      player.off('play');
    });
                      
    setTimeout(() => {
      if (state.apiEnabled === null) {
        state.apiEnabled = false;  
        // Do something 
      }
    }, 100);
                    
    player.getPaused().then((paused) => {
      state.apiEnabled = true;
      // Do something
    });

    您还可以使用detecting user agent 之类的技术来确定您是否在移动设备中,因此假设没有执行自动播放。

    我建议您不要侵入 Vimeo 的 iframe 来确定自动播放状态。为了确保您的脚本在未来能够正常工作,应该采用公共 API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-13
      • 2016-03-16
      • 2017-01-24
      • 2012-02-20
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      • 2018-10-01
      相关资源
      最近更新 更多