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的主要内容,如果未能解决你的问题,请参考以下文章