Chrome自动播放策略 - Chrome 76

24

我正在构建一个运行在Chrome上的自助媒体,它可以播放带声音的视频。我知道默认情况下,Chrome只允许带有muted属性的视频自动播放。

我知道以前我能通过在chrome://flags/#autoplay-policy中启用一个标志来覆盖这个限制。

但是我刚刚升级到Chrome 76,发现这个标志似乎已经消失了,并且视频自动播放似乎不再起作用了!

你有什么想法如何解决这个问题吗?

[Chrome 76.0.3809.100(正式版本)(64位)] Mac OS Mojave

5个回答

44

我最近与一些 Google 开发人员就该问题进行了交流,我提交了一个 bug。他们非常乐于提供帮助。

尽管 Chrome 浏览器的自动播放策略已在 https://chromium-review.googlesource.com/c/chromium/src/+/1593800 中删除,但您仍然可以通过命令行使用特定的自动播放策略来运行 Chrome。

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

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

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

祝好运。


1
太好了!这解决了我的问题。谢谢分享。 - Craig MacKenzie
1
那么 no-user-gesture-required 选项是什么作用?它是否总是允许自动播放? 当 #autoplay-policy 仍然可用时,禁用自动播放的设置值为“需要文档用户激活”。它的等效命令行选项是什么? (在我的测试中,使用 --autoplay-policy=no-user-gesture-required 并不能阻止视频自动播放) - webp
@webp "no-user-gesture-required" 表示用户无需与文档交互,视频或音频源就可以自动开始播放。 - code
3
那么我应该使用什么值来防止视频自动播放呢? - webp
@Webp 我不是很理解你的意思。这篇文章是在陈述在 kiosk 模式下自动播放无法正常工作的问题。如果您不想让视频自动播放...您尝试添加 autostart="false" 标签了吗? - code

7
您可以使用命令行代码在无需用户手势的情况下以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 &

0
如果你想要更简单的选项,你可以在这里找到。
在Chrome设置中,选择隐私和安全,然后在底部选择“网站设置”,在附加内容设置部分选择声音。
然后使用允许播放声音的功能。

enter image description here

在这里,您可以为您的网站使用自动播放视频。

-1
根据Chrome的新政策:
Chrome已经阻止了任何声音,我也遇到了这个问题。
我只需要在我的脚本页面中添加这个触发器点击事件,它就可以正常工作了:
$('body).trigger('click');

在Chrome版本87.0.4280.141中尝试过,使用普通的JavaScript或jQuery都无法工作。 - Luca_Scorpion
你应该尝试原始JavaScript。 - Ork Sophanin
正如我在评论中提到的那样,我确实尝试过。仅仅使用 document.body.click() 也不起作用。从JS触发的这种事件并不被视为“可信”,因此不算作用户与页面的交互。 - Luca_Scorpion
在你的 play() 代码顶部尝试这段代码 $('body').trigger('click'); - Ork Sophanin

-3
我在我的页面中添加了一个div,并在加载页面时调用了点击触发器!它正常工作!
<div id="test"></div>
<script>
    $(function(){
        $("#test").trigger("click");
    })
</script>

1
你确定吗?我无法使用document.getElementById("test").click()复制
那么jQuery有什么不同?
- dpren
同样的问题在这里.. 用普通的JS也做不到。 - mikey

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