zoukankan      html  css  js  c++  java
  • 移动端h5 实现多个音频播放

    前一段时间做到一个项目,其中用到很多之前没用过的东西,其中一个就是h5的多音频实现,背景音频和说话同时播放,其中出现了很多问题,不过总算找到了解决方案。

    平时做H5如果只有一个音乐的话就直接在页面里面添加一个audio标签,具体这个标签怎么使用,有哪些属性可以参考http://www.runoob.com/tags/ref-av-dom.html

    <audio id="backMusic"  src="music.mp3" autoplay loop></audio> <!--音乐-->
    今天就来解决一下,怎么播放多个音频文件
    刚开始我的方法是在H5页面放很多音频,也就是很多audio标签,发现苹果手机不兼容,它只能播放一个音频,暂停上一个,下一个也不会播放,后面网上查找了一下,说苹果微信自带播放音频的只能同时播放一个,然后只能暂停背景音乐去播放说话的声音
    这个我是通过动态修改audio标签的src属性
    下面是我定义的音乐的文件,打开页面自动播放背景音乐
      var backMusic = document.getElementById("backMusic");
    
            setTimeout(function(){
                backMusic.play();
                music.play();
    
            },100)
    document.addEventListener('DOMContentLoaded', function () {
        function audioAutoPlay() {
            music.play();
    
            backMusic.play();
            document.addEventListener("WeixinJSBridgeReady", function () {
                music.play();
                backMusic.play();
            }, false);
    

      然后我又在需要说话的时候把这个背景音乐的src的值动态改变为需要播放的音频

                           music.pause();
                                     music.src="fumu.mp3";//父母唠叨
                                     setTimeout (function(){
                                   
                                         music.play();
    
    								 },2000);
    

      这样只能实现单个音频播放,但是要实现多个音频同时播放还是没解决,后来又看了别人发的一个项目参考了一下,进行了尝试,发现居然可以了

           

    //定义
    <div class="audiopalyer" style="display: none">
    	<audio id="backMusic"  src="music.mp3" autoplay loop></audio> <!--背景音乐-->
    </div>
    <div class="talkplay" style="display: none">
    	<audio id="audios"   src="music.mp3" ></audio>//中间穿插的和背景音乐同时播放的音频
    
    </div>
    
    //js
      var music = document.getElementById("audios");
      var backMusic = document.getElementById("backMusic");
        setTimeout(function(){
          audioAutoPlay();
            },100)
       //打开微信自动播放音频
       document.addEventListener('DOMContentLoaded', function () {
        function audioAutoPlay() {
            music.play();
    
            backMusic.play();
            document.addEventListener("WeixinJSBridgeReady", function () {
                music.play();
                backMusic.play();
            }, false);
    
    
    //需要两个音频同时播放的时候
       music.pause();
                                  
      music.src="fumu.mp3";//父母唠叨
                                     
      setTimeout (function(){                                
         music.play();},2000);
    

      

      既然微信自带的播放器只能播放一个音频,那如果用别的音频软件去同时播放别的音乐应该是可以的,就这样我把两个音频分别放到不同的div里面,相当于把他们两个隔开了,然后再获取这两个标签,让他们开始的时候同时播放,然后暂停那个需要替换音频资源的

    等到需要播放说话声音的时候就直接替换src然后再让他播放就可以实现两个音频同时播放的效果

  • 相关阅读:
    Python中Random随机数返回值方式
    SQL跨库查询
    正则表达式基本语法
    excel VBA使用教程
    使用某些Widows API时,明明包含了该头文件,却报错“error C2065: undeclared identifier”
    电脑开机后数字键盘为关闭状态
    编译Boost 详细步骤 适用 VC6 VS2003 VS2005 VS2008 VS2010
    变量作用域,不能理解,先记下
    解决MySQL 在 Java 检索遇到timestamp空值时报异常的问题
    Annotation
  • 原文地址:https://www.cnblogs.com/kingsnowcan/p/H5_audio_20190422.html
Copyright © 2011-2022 走看看