提问者:小点点

如何在chrome上进行音频自动播放


音频自动播放在Mozilla、Microsoft Edge和旧的Google Chrome中也可以使用,但在新的Google Chrome中却不能使用。

他们已经阻止了自动播放。有没有办法让它在谷歌Chrome音频自动播放?


共3个答案

匿名用户

解决方案#1

我在这里的解决方案是创建一个iframe

<iframe src="audio/source.mp3" allow="autoplay" style="display:none" id="iframeAudio">
</iframe> 

对于非chrome浏览器,还有audio标签

<audio autoplay loop  id="playAudio">
    <source src="audio/source.mp3">
</audio>

在我的脚本

  var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
  if (!isChrome){
      $('#iframeAudio').remove()
  }
  else {
      $('#playAudio').remove() // just to make sure that it will not have 2x audio in the background 
  }

解决方案#2:

根据@Leonard的说法,还有另一种解决方法

创建一个不播放任何内容的iframe,以便在第一次加载时触发自动播放。

<iframe src="silence.mp3" allow="autoplay" id="audio" style="display: none"></iframe>

mp3文件静音的好来源。mp3

然后安心播放你的真实音频文件。

<audio id="player" autoplay loop>
    <source src="audio/source.mp3" type="audio/mp3">
</audio>

就我个人而言,我更喜欢解决方案2,因为它是一种更干净的方法,不太依赖JavaScript。

2019年8月更新

解决方案#3

作为替代方案,我们可以使用

对于Firefox来说,音频自动播放似乎正在工作,因此我们不需要

// index.js
let audioPlaying = true,
    backgroundAudio, browser;
browser = navigator.userAgent.toLowerCase();
$('<audio class="audio1" src="audio.mp3" loop></audio>').prependTo('body');
if (!browser.indexOf('firefox') > -1) {
    $('<embed id="background-audio" src="audio.mp3" autostart="1"></embed>').prependTo('body');
    backgroundAudio = setInterval(function() {
        $("#background-audio").remove();
        $('<embed id="background-audio" src="audio.mp3"></embed>').prependTo('body');
    }, 120000); // 120000 is the duration of your audio which in this case 2 mins.
}

此外,如果您有音频切换事件,请确保删除创建的

注意:切换后,它将从开始重新启动,因为

$(".toggle-audio").on('click', function(event) {
    audioPlaying = !audioPlaying;
    $("#background-audio").remove();

    clearInterval(backgroundAudio);
    if (audioPlaying){
        $(".audio1").play();
        // play audio 
    }
    else {
        $(".audio1").pause();
    }

现在确保隐藏这些

audio, embed {
    position: absolute;
    z-index: -9999;
}

注意:diplay:none可见性:hidden将使

匿名用户

在chrome中使用音频标签的自动播放功能有一个非常巧妙的技巧。

添加

<iframe src="silence.mp3" allow="autoplay" id="audio"></iframe>

silence.mp3只有0.5秒的沉默。

<audio id="player" autoplay controls><source src="0.mp3" type="audio/mp3"></audio>

之后工作。

Chrome注意到已经播放了一个声音,并允许自动播放音频标签。

匿名用户

截至2018年4月,Chrome的自动播放政策发生了变化:

“Chrome的自动播放策略很简单:

  • 始终允许静音自动播放

在以下情况下,允许自动播放声音:

  • 用户已与域交互(单击、点击等)
  • 在桌面上,用户的媒体参与度指数阈值已经超过,这意味着用户以前播放过声音视频
  • 在手机上,用户已将网站添加到其主屏幕

而且

  • 顶部框架可以将自动播放权限委托给其iFrame,以允许自动播放声音。"

Chrome的开发者网站提供了更多信息,包括一些编程示例,可在此处找到:https://developers.google.com/web/updates/2017/09/autoplay-policy-changes