Vimeo 视频自动播放在 Safari 11 中不起作用:NotAllowedError

Posted

技术标签:

【中文标题】Vimeo 视频自动播放在 Safari 11 中不起作用:NotAllowedError【英文标题】:Vimeo video autoplay not working in Safari 11: NotAllowedError 【发布时间】:2018-03-08 17:11:44 【问题描述】:

自上次 Safari 更新到版本 11 后,一些视频停止播放。 最糟糕的是,有时,比如五次尝试一次,它会起作用。 我认为原因是我的 JS 脚本集成了 Vimeo Player API,但结果是即使 Vimeo 的嵌入链接根本不起作用。

因此,当您在 Safari 11 中打开嵌入视频时,它不会启动并且会完全阻塞。您可以通过打开即看到它 https://player.vimeo.com/video/XXXXXXXX?autoplay=1

在控制台日志中你可以得到类似的东西:

Unhandled Promise Rejection: NotAllowedError (DOM Exception 35): The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.

【问题讨论】:

【参考方案1】:

您可以将background URL 参数添加到 iframe src:

<iframe src="https://player.vimeo.com/video/XXXXXXXX?autoplay=1&background=1>

如果您的视频有声音,您还可以再次导出您的视频,完全没有音轨。比你可能根本不需要 background 参数。

问题是 Safari 11 会阻止所有有声音的视频自动播放。

即使视频(例如我的情况)没有声级,但它以没有音量的声音导出。地址栏可以看到sovolume图标:

【讨论】:

您还可以在播放前以编程方式将视频静音。 有关自动静音的提示:***.com/questions/26649641/…(查看更新的答案,API 多年来发生了变化) 我刚刚在 html5 视频背景的视频标签中添加了“静音” 我是用video标签做的,但不是用Vimeo【参考方案2】:

因为 safari 不允许自动播放所有视频。 您可以添加mousemove 事件监听器。当鼠标移动时,视频开始播放。 那么你必须移除这个事件。

【讨论】:

【参考方案3】:

ios 支持:自 iOS 10+ 起支持自动播放视频,但需要标签上的playsinline 属性。

【讨论】:

这适用于视频标签,但不适用于 iframe。至少在 Safari 中不适合我。

以上是关于Vimeo 视频自动播放在 Safari 11 中不起作用:NotAllowedError的主要内容,如果未能解决你的问题,请参考以下文章

静音的自动播放视频在 Safari 11.0 中停止播放

Safari 11 上的视频自动播放

单击时未播放 Vimeo 嵌入视频 [关闭]

是否可以使用 UIWebView 方法在 iphone 本机应用程序中播放 vimeo 视频?

播放 Vimeo 视频时暂停引导轮播

用于管理 vimeo *和* youtube 视频播放列表的 Javascript 播放器?