声音无法自动播放一直在IOS/Android上面都是一个惯例, 桌面端的 Safari在2017年的11版本中也宣布禁止带有声音的多媒体自动播放, 紧接着2018年4月份Chrome发布的66版本也正式关闭了声音自动播放, 也就是 <audio autoplay></audio> <video autoplay></video>在桌面版的浏览器也将失效.

一开始移动端是完全禁止带有音频的媒体自动播放, 是因为考虑到了手机带宽和对电池的消耗, 但是后来又改了, 因为浏览器厂商发现网页开发人员可能会使用GIF动态图替代视频实现自动播放, 正如IOS文档所说, 使用GIF的带宽流是video(h24)格式的12倍, 而播放性能消耗是2倍, 所以这样对用户反而不利, 还有开发者使用Canvas进行hack, 如Android Chrome文档中提到.

因此浏览器厂商开放了对多媒体自动播放的限制, 只要具备以下条件就能自动播放:

1. 没有音频轨道, 或者设置了muted属性

2. 在视图里面是可见的, 要插入到DOM里面并且不是display: none; 或者 visibility: hidden的, 没有滑出可视区域.

也就是说只要你不开声音扰民, 且对用户可见, 就可以自动播放.

桌面版的Safari浏览器也使用了这个策略, 升级到 Safari 11 之后的说明:

以及Chome文档的说明

这个策略对视频网站的冲击非常大, 比如用Safari打开tudou

Chrome 的禁止更加人性化一点, 他有一个MEI的策略, 这个策略大概就是说只要用户在当前网页主动播放超过7s的媒体, 视频窗口不能小于 200 X 140, 就允许自动播放

对于网页开发者来说应该如何规避这个风险?

Chrome文档给了一个最佳实践, 先把音频加一个muted的属性就可以自动播放, 然后显示一个声音被关掉的按钮, 提示用户点一下打开声音, 对于视频来说, 确实可以这样处理, 但是对于音频来说, 很多人是监听页面的点击事件, 只要点一次就可以开始播放, 一般都是播放背景音乐, 也不需要按钮,但是如果有多个音频资源的页面应该如何自动播放呢?

首先, 如果用户还没有进行交互就调用播放声音的API, Chrome会给个提示

Safari会这么提示

NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.

意思就是说, 用户还没有进行交互, 不能调用play(), 那么用户的交互包括哪些呢?

包括用户触发的 touchend, click, doubleclick或者是deydown, 在这些事件里面可以调用play()

所以上面提到的很多人是监听的整个页面的点击事件进行播放的, 不管点击哪里, 只要点了就行, 包括触摸下滑

原生播放视频只能使用 video 标签, 而原生音频播放除了使用 audio标签外, 还可以使用一个API叫做 AudioContext, 它是一个能够用来控制声音播放并且带了很多丰富的操作接口.

参考链接

Chrome 66禁止声音自动播放之后

Chrome 新的自动播放策略

利用HTML5 Web Audio API给网页JS交互增加声音

Chrome 66 禁止声音自动播放的更多相关文章

  1. Chrome 声音自动播放抱错问题【play() failed】

    Chrome下调用play后抱错:DOMException: play() failed because the user didn't interact with the document firs ...

  2. video实现有声音自动播放

    video实现自动播放有声音 需求:老板见人家可以的,我们的也要可以!!! 前端:自动播放,简单... 要实现:鼠标移入视频播放同时有声音,移出让你暂停,,,,, 问题集合 1- 自动播放实现没有声音 ...

  3. 怎样解决Chrome浏览器因为禁止音频自动播放所造成的视频无法自动播放且报错: Uncaught (in promise) DOMException的问题

    这个问题是谷歌基于用户体验方面的考虑, 对页面加载时自动播放的音频作了限制, 试想一下, 如果你打开某个页面就立刻自动播放某种不可描述的声音, 那体验想必是十分酸爽. 尽管这个设定是针对音频的, 但实 ...

  4. Windows下如何禁止优盘自动播放、自动运行

     造冰箱的大熊猫@cnblogs 2019/1/28 为了防范层出不穷的病毒和木马,如何禁止插入优盘后Windows自动播放优盘或运行优盘程序? 运行环境:Windows 7 1)点击Windows开 ...

  5. [bug]解决chrome浏览器不支持所有媒体音乐不自动播放问题

    声音无法自动播放这个在 IOS/Android 上面一直是个惯例,桌面版的 Safari 在 2017 年的 11 版本也宣布禁掉带有声音的多媒体自动播放功能,紧接着在 2018 年 4 月份发布的 ...

  6. 【转】解决chrome浏览器不支持audio和video标签的autoplay自动播放

    声音无法自动播放这个在 IOS/Android 上面一直是个惯例,桌面版的 Safari 在 2017 年的 11 版本也宣布禁掉带有声音的多媒体自动播放功能,紧接着在 2018 年 4 月份发布的 ...

  7. Chrome,firefox解除阻止视频自动播放

    Firefox 66 将阻止自动播放音频和视频 PingWest品玩2月5日报道,从发布适用于桌面的 Firefox 66 和 Firefox for Android 开始,Firefox 将默认阻止 ...

  8. 阿里云 Aliplayer高级功能介绍(九):自动播放体验

    基本介绍 经常会碰到客户询问,为什么我设置了autoplay为true,但是没有自动播放,每次都要向客户解释这个是浏览器从用户体验角度考虑做的限制,客户会继续询问那我要怎么做? 针对这个问题Alipl ...

  9. 如何自动播放光盘、解决win7电脑不能播放光盘

    如何设置光盘自动播放.允许光盘自动运行呢? 在使用电脑光驱播放光盘文件的时候,经常出现的一个问题是,光驱不能自动播放光盘,但是打开光盘的文件手动操作没有任何问题,这给使用造成了很多麻烦.那么,如何让光 ...

随机推荐

  1. 循环神经网络-RNN入门

    首先学习RNN需要一定的基础,即熟悉普通的前馈神经网络,特别是BP神经网络,最好能够手推. 所谓前馈,并不是说信号不能反向传递,而是网络在拓扑结构上不存在回路和环路. 而RNN最大的不同就是存在环路. ...

  2. JAVA基本类型和包装类

    JAVA的包装类 Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表 ...

  3. http 请求头部解析

    作者:知乎用户链接:https://www.zhihu.com/question/42696895/answer/109035792来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  4. SS报错的解决

    SS报错 AttributeError: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol: 解决方案: EVP_CIPHER_ ...

  5. [学习日志]2018-11-18 主要: idea更改java版本

    idea更改java版本 问题: 解决办法:

  6. HDU 1213 How Many Tables(并查集裸题)

    Problem Description Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. ...

  7. ELF文件加载与动态链接(二)

    GOT应该保存的是puts函数的绝对虚地址,这里为什么保存的却是puts@plt的第二条指令呢? 原来“解释器”将动态库载入内存后,并没有直接将函数地址更新到GOT表中,而是在函数第一次被调用时,才会 ...

  8. url的使用

    1.urls.py 默认是在主目录中,主路由配置文件,会包含最基本的地址映射,并且每个地址访问都必须要先经过该文件. 作用:通过 urls中定义好的地址找到对应的视图处理函数 urlpatterns ...

  9. transition的用法以及animation的用法

    http://www.cnblogs.com/xiaohuochai/p/5347930.html transiton: 过渡属性 过渡所需要时间 过渡动画函数 过渡延迟时间: 触发过渡 单纯的代码不 ...

  10. HPU第四次积分赛-L:A Winged Steed(完全背包)

    A Winged Steed 描述 有n种千里马,每一种都有若干匹,第i种马的颜值ai​,价格di​.现有m个牧马人要去挑选千里马,每一位牧马人对马的颜值都有要求:{所选马的颜值总和} ⩾Ai​.现在 ...