今天教大家使用html5 Audio标签实现音乐播放器,模仿QQ音乐、天天动听等类似效果。这是我当年刚接触H5的一个小demo,适合初学者初考,代码也有很大的优化空间。

  1. audio
属性 属性值 注释
src url 播放音乐的url地址
preload load/auto 预加载
loop loop 循环播放
controls controls 是否显示默认的控制按钮
autoplay autoplay 自动播放

各大浏览器对音乐格式的支持情况

音频格式 Chrome Firefox IE9 Opera Safari
OGG 支持 支持 支持
MP3 支持 不支持 支持
WAV 不支持 支持 不支持

属性

属性 Chrome Firefox
duration 获取媒体文件的总时长,以秒(S)为单位,如果无法获取返回NaN
paused 如果媒体文件被暂停,那么paused属性返回true,反之false
ended 如果媒体文件播放完毕返回true
muted 用来获取是否为静音状态,值为bool
volume 控制音量的属性,值为0-1;0 为最小,1为最大
startTime 返回起始的播放时间
error 返回错误的代码,额uull的时候为正常,否则可以通过Music.error.code来获取具体繁荣错误代码:
currentTime 用来获取或者控制当前的播放时间,单位是秒(S)
currentSrc 以字符串的形式返回正在播放或者已经加载的文件

函数 作用
load() 加载音频,视频
play() 播放
pause() 暂停播放
canPlayType() 测试是否支持给定类型文件

常用的事件

事件名称 事件作用
loadstart 客户端开始请求数据
progress 客户端正在请求数据,缓冲
play  
pause  
ended  
timeupdate 当前播放时间发生改变的时候
canplaythrough 歌曲已经载入完全
canplay 缓冲至目前可播放的状态

注意事项:

1.由于音乐文件加载需要事件,所以不能立即取到audio.duration;
2.需要封装一个函数判断音乐播放完毕。
3.因为是移动端需要用rem进行自适应。
JS代码:
源码地址,可以去下载看看   http://download.csdn.net/download/wcslb/9740065

fn();
function fn(){var w = window.innerWidth / 30;var html = document.querySelector('html');html.style.fontSize = w + 'px';
};
window.onresize = fn;
$("#footer").load("footer.html");
//轮播图
var mySwiper = new Swiper('.swiper-container', {// 环路loop : true,//分页器pagination : '.swiper-pagination',paginationClickable :true,
})
// 当前播放的歌曲编号
var num=0;var audio=document.querySelector("audio");
$(".songMenu").on('click',function(){$("#songMenu").slideDown("fast");
})
$(".off").on('click',function(){$("#songMenu").slideUp("fast");
});
$("main").add("header").on('click',function(){$("#songMenu").slideUp("fast");
})var musicArr=["mp3/袖手旁观.mp3","mp3/莫文蔚 (Karen Mok) - 当你老了.mp3","mp3/阿肆 - 我在人民广场吃炸鸡.mp3"]
//音播放开关乐
$(".stop").on('click',function(){if(audio.paused){Index(num);$("#dog").attr("class","dog");$(".stop").html("");}else{audio.pause();$("#dog").removeAttr("class","dog");$(".stop").html("");}
})
// 上一曲
$(".MovePrevious").on('click',function(){num=(3+--num)%3;Index(num);
});
//下一曲
$(".MoveNext").on('click',next);function next(){num=(++num)%3;Index(num);}
//点击主页歌单
$(".songMenu li").on('click',function(){num=$(this).index();Index(num);
})
//点击右侧歌单
$(".page2 li").on('click',function(){num=$(this).index();Index(num);
})
//重播
$(".playback").on('click',function(){audio.currentTime=0;audio.play();
})
$(".soundOff").on('click',function(){audio.muted ? $(".soundOff").html("") : $(".soundOff").html("");audio.muted=!audio.muted;})function Index(num){//开始播放歌曲audio.src=musicArr[num];        $(".stop").html("");audioPlay(musicArr[num],next);playingStyle();
}
function playingStyle(){// 主页歌单$(".Mname").css("color","#fff");$(".Msonger").css("color","#bbbab9");$(".songMenu li").eq(num).find("span").css("color","#955ebe");// 右侧歌单$(".Pname").css("color","#fff");$(".Psonger").css("color","#bbbab9");$("#page2 li").eq(num).find("span").css("color","#955ebe");//顶部信息$(".name").html($(".Pname").eq(num).html());$(".author").html($(".Psonger").eq(num).html());
}function audioPlay(soundPath,callback){ /*判断声音是否播放完成,播放完成之后执行回调函数*/audio.src=soundPath;   audio.play();if(callback != undefined){var  is_playFinish = setInterval(function(){if(audio.ended){callback();window.clearInterval(is_playFinish);}if (!isNaN(audio.duration)) {var timeValue = audio.duration; //音乐时间var m=parseInt(timeValue/60);var s=parseInt(timeValue%60);s<10 ? s="0"+s : s=s;$(".startTime").html(m+":"+s);//当前播放时间var NowtimeValue = audio.currentTime;var nowM=parseInt(NowtimeValue/60);var nowS=parseInt(NowtimeValue%60);nowS<10 ? nowS="0"+nowS : nowS=nowS;$(".endTime").html(nowM+":"+nowS);// 用时间比来获取进度条的值var progressValue =100*(audio.currentTime/audio.duration); //$("progress").val(progressValue);};}, 10);}
}

(我吃酸萝卜 新浪微博http://www.weibo.com/wcslb          ---李帅醒著)

H5编写Audio音乐播放器——李帅醒博客相关推荐

  1. JSONP跨域获取JSON数据(含jQuery方法)——李帅醒博客

    首先我要强调JSONP和AJAX没有半毛钱关系,别把他们混淆!!!只不过他们都是从后台获取数据的方法! 前言: 说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨 ...

  2. php如何添加音乐播放器,怎么为Wordpress博客添加MP3播放器

    怎么为Wordpress博客添加MP3播放器? 首先到Flash MP3 Player 的主页上下载该程序.解压缩之后,将 mp3player.swf 和 ufo.js 两个文件放到服务器上,这里假设 ...

  3. 解决vue中使用swiper插件——李帅醒博客

    解决vue中使用swiper插件,在引入swiper插件后,发现无法正常运行 这次我们模拟从后台取下数据,然后数据绑定在swiper标签中. <template><div class ...

  4. H5,Audio音乐播放器(移动版)

    有些时候,总是感觉自己进步的没有以前快了.于是就怀疑自己是不是也被时间磨灭了,这可真是一件不幸的事儿.可能是自己会的东西太少了,总是有种莫名的危机感. 前一段时间,想写一个移动版音乐播放器,于是就开始 ...

  5. 手把手教你编写一个音乐播放器

    话不多说,直接看效果图: 代码如下: <!doctype html> <html lang="en"><head><meta charse ...

  6. java编写的音乐播放器

    一.音乐播放器的实现原理 Javase的多媒体功能很弱,所以有一个专门处理多媒体的插件叫JMF,JMF提供的模型可大致分为七类 * 数据源(Data source) * 截取设备(Capture De ...

  7. <Python>PyQt5自己编写一个音乐播放器(优化版)

    Python音乐播放器 更新日志: 20221031:添加独立播放列表 20221107:添加"上一首"."下一首"功能 展示图片: 202211071308更 ...

  8. Android Broadcast编写的音乐播放器

    此播放器的播放操作交给后台执行,二者通过广播进行进行通信(双向通信),前台点击播放暂停停止按钮通过广播发送给后台,后台播放变换通过广播通知前台. 前台代码package org.crazyit.bro ...

  9. JS和H5做一个音乐播放器,附带源码

    http://mp.weixin.qq.com/s/KpXT9X46AMlUVXQvpHuXGQ 效果图: 实现的功能 1.首页 2.底部播放控件 3.播放页面 4.播放列表 5.排行榜 6.音乐搜索 ...

最新文章

  1. 使用 Firefox攻击Web2.0应用(二)
  2. static 用法www
  3. python如何强制转换数据类型_python数据类型强制转换实例详解
  4. sketch软件_因远程协作大火的Figma,到底有多好用,会取代Sketch的地位吗?
  5. 【写作技巧】毕业论文写作:本科、硕士论文写作必备数据库
  6. Ionic系列——调用系统电话
  7. NA Express
  8. gitlab设置项目组成员权限
  9. 24、Scratch教程-图章工具
  10. 推荐系统用户反馈延迟新解法!阿里提出CVR无偏估计算法
  11. html2canvas黑背景,解决canvas转base64/jpeg时透明区域变成黑色背景的方法
  12. 电脑编程从哪里开始学习_我想学习编程,但我不知道从哪里开始
  13. 如何将一个应用添加开机启动项
  14. Wireshark之流量包分析+日志分析 (护网:蓝队)web安全 取证 分析黑客攻击流程(上篇)
  15. vba学习笔记 数组的LBound和UBound
  16. 90个外国英文网站强力推荐
  17. 无法识别的USB设备:跟这台计算机连接的一个USB设备运行不正常,WINDOWS无法识别...
  18. django 注册登录邮箱验证功能
  19. 哈佛商业评论:什么是颠覆性创新?
  20. 深圳打卡(四) 红树林与深圳湾公园

热门文章

  1. scrapy果壳爬虫
  2. 论成败 人生豪迈 大不了 从头再来
  3. 一文读懂新晋 L2 网络 Arbitrum 及其收益耕作机会
  4. 获取显卡名称、显存大小 代码
  5. php查看CPU信息,Linux_Linux中如何查看CPU的信息,top命令是Linux下常用的性能分 - phpStudy...
  6. python列表中如何增肌,如何拥有强健肌肉?了解这些增肌知识,让你快速拥有完美身形...
  7. jupyter notebook运行kera神经网络服务器挂掉重启解决办法
  8. 爬虫 某音海外版用户主页翻页x-tt-params加密参数逆向分析
  9. LeetCode 图解 | 42. 接雨水
  10. 计算机网络应用答题卡,2020年计算机软件水平考试答题卡填涂技巧