前一段时间做到一个项目,其中用到很多之前没用过的东西,其中一个就是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然后再让他播放就可以实现两个音频同时播放的效果

移动端h5 实现多个音频播放的更多相关文章

  1. H5多媒体(用面向对象的方法控制视频、音频播放、暂停、延时暂停)

    视频,音频播放器会是我们在工作中用到的一些h5新标签,它自带一些属性,比如暂停播放,快进快退,但是,我们经常不用原生的样式或者方法,我们需要自定义这些按钮来达到我们需要的样式,也需要我们自定义来实现一 ...

  2. AVS 端能力之音频播放模块

    功能简介 音频播放 音频流播放 URL文件播放 播放控制 播放 暂停 继续 停止 其它功能(AVS服务器端实现) 支持播放列表 支持上一首下一首切换 支持电台 事件指令集 AudioPlayer 端能 ...

  3. html5 audio音频播放全解析

    序 html5开启了一个新时代,因为它让浏览器本身变得不那么被动,audio api就是一个典型的列子,在html5还没确定之前,如果想要在网页上听音乐看视频唯一的办法就是用flash意思是当你没有给 ...

  4. 移动端H5制作安卓和IOS的坑 持续更新...

    移动端H5制作安卓和IOS的坑 持续更新... 前言:最近参加公司的H5页面创意竞赛,又遇到不少页面在不同系统上的坑.踩坑之余,觉得很多之前遇到的知识点都忘了,索性开一篇博文,把这些坑都统一归纳起来, ...

  5. 移动端H5混合开发设置复盘与总结

    此篇接上一篇: 移动端H5混合开发,Touch触控,拖拽,长按, 滑屏 实现方案 https://www.cnblogs.com/buoge/p/9346699.html app 场布设置已经上线了, ...

  6. 【转】h5页面audio不自动播放问题

    1.audio:html5音频标签 <audio loop src="/photo/aa.mp3" id="audio" autoplay preload ...

  7. 移动端H5开发遇到的问题及解决方法

    本篇文章给大家带来的内容是关于移动端H5开发遇到的问题及解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 微信分享签名错误invalid signature vue单页应用hi ...

  8. 移动端H5开发中的常见问题处理

    1.问题之合成海报: 功能技术:http://html2canvas.hertzen.com 问题描述:合成模糊.合成区域内容错位,合成不完整,合成边缘白条等. 解决方案:如有页面布局正常合成错位的, ...

  9. 最简单的视音频播放示例7:SDL2播放RGB/YUV

    本文记录SDL播放视频的技术.在这里使用的版本是SDL2.实际上SDL本身并不提供视音频播放的功能,它只是封装了视音频播放的底层API.在Windows平台下,SDL封装了Direct3D这类的API ...

随机推荐

  1. XSS,CSRF,Cookie防劫持的处理

    Cookie与sessionHTTP天然是无状态的协议, 为了维持和跟踪用户的状态, 引入了Cookie和Session. Cookie包含了浏览器客户端的用户凭证, 相对较小. Session则维护 ...

  2. TensorFlow在Windows上的CPU版本和GPU版本的安装指南(亲测有效)

    安装说明 平台:Window.Ubuntu.Mac等操作系统 版本:支持GPU版本和CPU版本 安装方式:pip方式.Anaconda方式 attention: 在Windows上目前支持python ...

  3. 软件测试-培训的套路-log3

    最新的套路!我是没了解过--下图中描述-log3 Dotest-董浩 但是我知道不管什么没有白吃的午餐而且还会给钱…如果真的有,请醒醒! 当然话又回来,套路不套路,关键看你是否需要:你如果需要我觉得是 ...

  4. 第十三节,OPenCV学习(二)图像的简单几何变换

    图像的简单几何变换 几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排 适当的几何变换可以最大程度地消除由于成像角度.透视关系乃至镜头自身原因所造成的几何失真所产生的的负面影响. 一.图像 ...

  5. Consumer高级特性

    Queue队列的消息一般是按照顺序各个队列依次获取消息,每次获取一个.所以假设有两个队列queue1,queue2,发送的消息为1.2.3.4.5.则默认情况下queue1获取到的消息为1.3.5,q ...

  6. 「JavaScript面向对象编程指南」闭包

    闭包 JS只有函数作用域,函数外为全局变量,函数内为局部变量 绿圆是函数fn的作用域,在这范围内可访问局部变量b和全局变量a,橙圆是fn内部函数inner的作用域,此范围内可访问自身作用域内的变量c, ...

  7. 【easy】Number of Segments in a String 字符串中的分段数量

    以空格为分隔符,判断一个string可以被分成几部分. 注意几种情况:(1)全都是空格 (2)空字符串(3)结尾有空格 思路: 只要统计出单词的数量即可.那么我们的做法是遍历字符串,遇到空格直接跳过, ...

  8. (转)Java语法----Java中equals和==的区别

    转载地址:https://www.cnblogs.com/smyhvae/p/3929585.html 一.java当中的数据类型和“==”的含义: 基本数据类型(也称原始数据类型) :byte,sh ...

  9. 马拉车算法——边界拓展时加限制hdu4513

    #include<bits/stdc++.h> using namespace std; #define maxn 500005 int n,p[maxn],s[maxn],s_new[m ...

  10. zabbix_agentd客户端安装与配置(windows操作系统)

    zabbix_agentd客户端安装与配置(windows操作系统)   **********  客户端操作   **********  标注:监控zabbix_agentd客户端安装对象是win s ...