【问题标题】:Chrome Autoplay Policy - Chrome 76Chrome 自动播放政策 - Chrome 76
【发布时间】:2019-12-18 17:13:58
【问题描述】:

我正在构建一个在 Chrome 上运行的信息亭媒体,可以播放视频和音频。我知道默认情况下,chrome 只允许自动播放带有静音道具的视频。

我知道我可以通过 chrome://flags/#autoplay-policy 在 chrome 中启用标志来覆盖它

我刚刚更新到 Chrome 76,这个标志似乎消失了,视频的自动播放似乎不再起作用了!

知道如何克服这个问题吗?

[Chrome 76.0.3809.100(官方构建)(64 位)] Mac OS Mojave

【问题讨论】:

    标签: google-chrome autoplay


    【解决方案1】:

    我最近刚刚与 Google 的一些开发人员讨论了这个问题。我提交了一个错误。他们非常有帮助。

    即使在 https://chromium-review.googlesource.com/c/chromium/src/+/1593800 中删除了自动播放策略 chrome 标志,您仍然可以从命令行使用特定的自动播放策略运行 Chrome。

    不需要任何用户手势的自动播放策略。

    /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --autoplay-policy=no-user-gesture-required

    他们说这个命令会保留,所以这很好,但更好的是 Chrome 允许您始终通过明确允许网站发出声音“站点设置 > 声音”来启用自动播放

    祝你好运。

    【讨论】:

    • 完美!这解决了我的问题。感谢分享。
    • 那么这个no-user-gesture-required 选项有什么作用?它总是允许自动播放?当这个#autoplay-policy 仍然可用时,禁用自动播放的设置值为“需要文档用户激活”。它的等效命令行选项是什么? (在我的测试中,使用--autoplay-policy=no-user-gesture-required 不会阻止视频自动播放)
    • @webp "no-user-gesture-required" 表示用户无需与文档交互即可自动开始播放视频或音频源。
    • @code_secret 那么我应该使用什么值来防止视频自动播放?
    • @webp 我不太明白你的意思。这篇文章说明了在信息亭模式下自动播放的问题。如果您不希望您的视频自动播放...您是否尝试添加标签 autostart="false" ?
    【解决方案2】:

    您可以使用命令行代码在 kiosk 模式下执行 chrome,无需用户手势:

    google-chrome-stable --kiosk http://google.com/ --new-window --start-maximized --incognito  --autoplay-policy=no-user-gesture-required --disable-features=PreloadMediaEngagementData,AutoplayIgnoreWebAudio,MediaEngagementBypassAutoplayPolicies &
    

    【讨论】:

      【解决方案3】:

      根据 Chrome 的新政策:
      Chrome已经阻止了任何声音,我也遇到了这个问题。
      我只是将此触发器单击添加到我的脚本页面,它确实可以正常工作:

      $('body).trigger('click');
      

      【讨论】:

      • 在 Chrome 版本 87.0.4280.141 中试过,不适用于纯 js 或 jQuery。
      • 你应该试试 Raw javascript。
      • 正如我在评论中提到的,我确实尝试过。简单地使用document.body.click() 也不起作用。此类由 JS 触发的事件不被视为“受信任”,因此不算作用户与页面的交互。
      • 在您的play() 代码顶部尝试此代码$('body').trigger('click');
      【解决方案4】:

      我只是在我的页面中添加一个 div 并在加载页面上调用点击触发器! 它工作正常!

      <div id="test"></div>
      <script>
          $(function(){
              $("#test").trigger("click");
          })
      </script>
      

      【讨论】:

      • 你确定?我无法用 document.getElementById("test").click() 复制 jQuery 有什么不同?
      • 这里一样.. 用普通的 js 做不到
      猜你喜欢
      • 2018-11-01
      • 2021-08-20
      • 2014-05-03
      • 2018-12-31
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      • 2013-11-01
      • 2015-03-07
      相关资源
      最近更新 更多