H5编写Audio音乐播放器——李帅醒博客
今天教大家使用html5 Audio标签实现音乐播放器,模仿QQ音乐、天天动听等类似效果。这是我当年刚接触H5的一个小demo,适合初学者初考,代码也有很大的优化空间。
- 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 | 缓冲至目前可播放的状态 |
注意事项:
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音乐播放器——李帅醒博客相关推荐
- JSONP跨域获取JSON数据(含jQuery方法)——李帅醒博客
首先我要强调JSONP和AJAX没有半毛钱关系,别把他们混淆!!!只不过他们都是从后台获取数据的方法! 前言: 说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨 ...
- php如何添加音乐播放器,怎么为Wordpress博客添加MP3播放器
怎么为Wordpress博客添加MP3播放器? 首先到Flash MP3 Player 的主页上下载该程序.解压缩之后,将 mp3player.swf 和 ufo.js 两个文件放到服务器上,这里假设 ...
- 解决vue中使用swiper插件——李帅醒博客
解决vue中使用swiper插件,在引入swiper插件后,发现无法正常运行 这次我们模拟从后台取下数据,然后数据绑定在swiper标签中. <template><div class ...
- H5,Audio音乐播放器(移动版)
有些时候,总是感觉自己进步的没有以前快了.于是就怀疑自己是不是也被时间磨灭了,这可真是一件不幸的事儿.可能是自己会的东西太少了,总是有种莫名的危机感. 前一段时间,想写一个移动版音乐播放器,于是就开始 ...
- 手把手教你编写一个音乐播放器
话不多说,直接看效果图: 代码如下: <!doctype html> <html lang="en"><head><meta charse ...
- java编写的音乐播放器
一.音乐播放器的实现原理 Javase的多媒体功能很弱,所以有一个专门处理多媒体的插件叫JMF,JMF提供的模型可大致分为七类 * 数据源(Data source) * 截取设备(Capture De ...
- <Python>PyQt5自己编写一个音乐播放器(优化版)
Python音乐播放器 更新日志: 20221031:添加独立播放列表 20221107:添加"上一首"."下一首"功能 展示图片: 202211071308更 ...
- Android Broadcast编写的音乐播放器
此播放器的播放操作交给后台执行,二者通过广播进行进行通信(双向通信),前台点击播放暂停停止按钮通过广播发送给后台,后台播放变换通过广播通知前台. 前台代码package org.crazyit.bro ...
- JS和H5做一个音乐播放器,附带源码
http://mp.weixin.qq.com/s/KpXT9X46AMlUVXQvpHuXGQ 效果图: 实现的功能 1.首页 2.底部播放控件 3.播放页面 4.播放列表 5.排行榜 6.音乐搜索 ...
最新文章
- 使用 Firefox攻击Web2.0应用(二)
- static 用法www
- python如何强制转换数据类型_python数据类型强制转换实例详解
- sketch软件_因远程协作大火的Figma,到底有多好用,会取代Sketch的地位吗?
- 【写作技巧】毕业论文写作:本科、硕士论文写作必备数据库
- Ionic系列——调用系统电话
- NA Express
- gitlab设置项目组成员权限
- 24、Scratch教程-图章工具
- 推荐系统用户反馈延迟新解法!阿里提出CVR无偏估计算法
- html2canvas黑背景,解决canvas转base64/jpeg时透明区域变成黑色背景的方法
- 电脑编程从哪里开始学习_我想学习编程,但我不知道从哪里开始
- 如何将一个应用添加开机启动项
- Wireshark之流量包分析+日志分析 (护网:蓝队)web安全 取证 分析黑客攻击流程(上篇)
- vba学习笔记 数组的LBound和UBound
- 90个外国英文网站强力推荐
- 无法识别的USB设备:跟这台计算机连接的一个USB设备运行不正常,WINDOWS无法识别...
- django 注册登录邮箱验证功能
- 哈佛商业评论:什么是颠覆性创新?
- 深圳打卡(四) 红树林与深圳湾公园
热门文章
- scrapy果壳爬虫
- 论成败 人生豪迈 大不了 从头再来
- 一文读懂新晋 L2 网络 Arbitrum 及其收益耕作机会
- 获取显卡名称、显存大小 代码
- php查看CPU信息,Linux_Linux中如何查看CPU的信息,top命令是Linux下常用的性能分 - phpStudy...
- python列表中如何增肌,如何拥有强健肌肉?了解这些增肌知识,让你快速拥有完美身形...
- jupyter notebook运行kera神经网络服务器挂掉重启解决办法
- 爬虫 某音海外版用户主页翻页x-tt-params加密参数逆向分析
- LeetCode 图解 | 42. 接雨水
- 计算机网络应用答题卡,2020年计算机软件水平考试答题卡填涂技巧