众所周知,chrome浏览器在18年4月起,就在桌面浏览器全面禁止了音视频的自动播放功能。不光是这样,在页面加载完毕的情况下,用户没有click、dbclick、touch等主动交互行为,使用js直接调用.play() 方法的话,chrome都会抛出如下错误:

直到用户有交互之后,再次调用play()方法才会正常播放。但是对于开发来说,很多情况下我们还是需要让音频自动播放的,比如实时消息通知,有最新消息的话,播放提示音,这种情况下我们该怎么办呢,经过查阅和自己的摸索,目前有以下三种办法可以较好的解决这个问题,我们来看:

1、诱导用户发起交互

我们可以在页面加载完毕后,弹出一个获取权限的通知,诱导用户点击。这样,有了用户的主动交互行为,音视频便可以正常播放了。

2、音视频静音播放

chrome允许音视频在静音的情况下自动播放。也就是说,假如给音视频增加muted属性,这种情况下chrome是允许自动播放的,对于视频来说这种办法也不失为一种可行的方案。但是对于上边我们提出的收到消息播放提示音通知这样的需求,便无法满足了。所以这种办法并不能解决音频的问题。代码如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head><body><audio autoplay="autoplay" src="http://data.huiyi8.com/2017/gha/03/17/1702.mp3" controls="controls" preload id="auto"></audio>
</body>
<script>document.getElementById('auto').play()
</script></html>

静音情况下,音频正常播放,不会抛错。(注意:autoplay属性在chrome中无效)

3、通过iframe实现音视频文件实现自动播放

有位外国友人写的一篇文章中,提及到这种办法,我们把音频文件放入一个html文件,然后在我们需要使用的页面中用iframe引入此页面,这样可以实现自动播放,但是经过我的多番测试发现,当前引入的页面域名,不可以和iframe的src域名相等,不然的话会不太稳定,时而报错,时而正常。例如:

假如我们现在有a.html和b.html两个页面,现在我们在本地起了localhost:3000的服务

localhost:3000/a可以访问到a页面,localhost:3000/b可以访问到b页面

a页面:

<iframe allow="autoplay" src="http://localhost:3000/b.html"></iframe>

b页面:

<audio autoplay="autoplay" src="http://data.huiyi8.com/2017/gha/03/17/1702.mp3" controls="controls" preload id="auto"></audio>

那么此时,如果我们通过http://localhost:3000/a ,访问a页面则无法正常播放(时好时坏),但是a页面如果改为:

<iframe allow="autoplay" src="http://127.0.0.1:3000/b.html"></iframe>

这样的话,正常播放不会有问题总结下来就是,父窗口(即a页面)使用域名访问,那么iframe引入b的话,就不可以使用同一个域名(使用ip或不同域名均可正常播放)。但是这样做非常麻烦。

4、iframe直接引入音频

我们可以通过如下这样引入音频:

<iframe allow="autoplay" src="http://data.huiyi8.com/2017/gha/03/17/1702.mp3"></iframe>

这样iframe加载完毕就会自动播放音频,不过他的缺点也很明显,很多操作都没办法做。这样的引入视频,视频只能播放一次就结束。想要他多次播放,则需要手动重置iframe的src来实现。

总结:

4种方式总结下来,3和4两种通过iframe的方法都可以实现,但又各有优缺点,第三种虽然使用起来相对复杂一些,但是优势在于我们可以利用js对视频做相关操作。第四种引入方式简单,但是对于可操作性几乎没有操作性可言。不过对于我要实现的消息通知的需求来说,第四种是最佳的实现方案。前两种方案由于并不友好,就不过多说了。我们可以根据各自的使用场景来决定那种方案更合适。

参考链接:https://developers.google.com/web/updates/2017/09/autoplay-policy-changes

chrome下音频无法自动播放的解决办法相关推荐

  1. Chrome 实现音频/视频 自动播放

    Chrome 实现音频/视频 自动播放 //home.html 用a标签跳转到播放页<a href="test_video.html">跳转到视频/音频播放页</ ...

  2. audio音频不能自动播放的解决方法

    由于浏览器限制的原因,不允许自动播放audio音频,尝试网上的方法后也没有进展(如果有解决方法,欢迎评论~) 一.首先创建 audio 标签 <audio class="g-back- ...

  3. Bootstrap之Carousel不能自动播放的解决办法(转)

    Bootstrap是一个非常好的css/javaScript框架,尤其对于移动端的自适应和适配能力都比较强. 用Bootstrap自带的Carousel写了一个图片轮播的广告部分,用js调用后却出现了 ...

  4. 音频视频自动播放解决方案

    1.音频视频自动播放解决方案 1.1.使用背景 公司项目需要用到音频自动播放的功能,首先想到的就是autoplay属性. 想让内容自动播放的最简单方法是将autoplay属性添加到元素,并将autop ...

  5. 【转】禁用Chrome和Firefox中自动播放的动画GIF

    动画GIF已经腐臭,并且在浏览时自动播放时可能会非常烦人.以下是如何阻止他们在Chrome和Firefox中自动播放. 禁用动画GIF Firefox 在地址栏中输入:  about:config,然 ...

  6. ideapad720s在接通电源情况下,关机后自动重启的解决办法

    win10, ideapad720s, 在接通电源情况下,关机后自动重启的解决办法 本文参考:[求助] Win10系统联想U430P笔记本关机后自动重启的解决方法! 步骤1:点击笔记本左下角的&quo ...

  7. 如何避免音频爆音/杂响?音频爆音常见的解决办法

    如果CPU负载过高,并且无法在所选择的缓冲速率内缓冲音频,则在播放过程中可能会出现音频故障或音频掉线(播放时出现停顿)等问题.如何解决这一问题呢?本文详细讲解了音频爆音常见的解决办法 要解决音频爆音/ ...

  8. win10未开启没有运行无线服务器,win10系统提示共享无线自动配置服务没有自动运行的解决办法...

    win10系统提示共享无线自动配置服务没有自动运行的解决办法? win10系统有很多人都喜欢使用,我们操作的过程中常常会碰到win10系统提示共享无线自动配置服务没有自动运行的问题.如果遇到win10 ...

  9. 在win7系统 Keil 开发环境下 Jlink 仿真器连不上解决办法

    Keil 开发环境下 Jlink仿真器,在win7系统下,仿真器连不上解决办法 进入设备管理器,发现黄色问号,即windows不识别设备,分别右键点击属性,更新驱动程序.在安装keil目录下自动查找, ...

最新文章

  1. python写了代码_Python写代码的用法建议
  2. SQL server 行转列 列转行
  3. 笔记“SQL与Access”
  4. python re模块下载_python re模块详解
  5. java学习(107):StringBuilder
  6. java窗口只能点一个_java – 为什么界面只能在顶级类中声明?
  7. java设计模式 单例_java设计模式--单例模式
  8. SpringMVC测试框架(转载)
  9. javascript Prototype constructor的理解(一)
  10. android扫码支付宝ofo,ofo等六大单车接入支付宝扫码,一半共享单车可分享支付宝流量...
  11. 恒生Pb系统与讯投PB系统、PTrade交易系统比较
  12. python自动排版公众号_GitHub - sunshine2337/maxpress: MaxPress:MarkDown+Python实现微信公众号一键排版...
  13. MPICH2 bcast广播函数使用
  14. openwrt使用port-mirroring
  15. Ubuntu20.04切换阿里源镜像(清华源、网易源)
  16. 计算机传奇人物之詹姆斯.高斯林
  17. 计算机数字媒体计数专业好就业吗,2019数字媒体技术专业就业形势和就业方向分析...
  18. 使用quaggaJS识别图片中的条形码
  19. 上海喔趣科技有限公司面经 Java实习生(记录第一次面试)已oc
  20. curl工具使用简介

热门文章

  1. java methods infoxa_如何获取Java 8方法参考的MethodInfo?
  2. 食品行业5大核心业务电子合同方案:降低费用,业务提速80%
  3. IDEA提交本地项目至Gitee
  4. Python数据分析师养成记
  5. oracle 报错 column ambiguously defined
  6. Java开发项目的命名规范+命名方法+注释规范
  7. 1skp素材和草图溜溜是不是一样的免费?我看到了建模的乐趣!
  8. 前端复习大纲-CSS03
  9. LocalDate、LocalDateTime互转String
  10. React Native 椭圆虚线背景框