audio对象
src兼容.ogg .wav .mp3
<audio controls src='data/imooc.wav'></audio>
width autoplay loop muted静音
<audio controls src='data/imooc.wav' autoplay loop width='500' height='500' muted></audio>
播放play()
var myAudio = new Audio(); myAudio.src = 'data/imooc.wav'; myAudio.play(); btn.onclick = function(){ myAudio.play(); };
暂停pause()
pauseNode.onclick = function(){ myAudio.pause(); };
当前播放的时间currentTime
音频总时长duration
//返回音频的总长度 myAudio.addEventListener('canplay',function(){ durationNode.innerHTML = myAudio.duration; }); //更新当前播放的时间 setInterval(function(){ currentNode.innerHTML = myAudio.currentTime; },100);
音频源currentSrc
var myAudio = new Audio(); myAudio.src = 'data/imooc.mp3'; console.log(myAudio.currentSrc);
loop循环
myAudio.loop = true;
音频播放结束ended
myAudio.addEventListener('ended',function(){ console.log('音频播放结束'); console.log(myAudio.ended) });
重新加载
loadBtn.onclick = function(){ myAudio.load(); };
跳转到新的播放位置seeked / seeking
myAudio.addEventListener('seeked',function(){ console.log('seeked'); }); myAudio.addEventListener('seeking',function(){ console.log('seeking'); sekingNum++; seekingNum.innerHTML = sekingNum; });
playbackRate设置当前播放速度
myAudio.playbackRate = '15'; console.log(myAudio.playbackRate)
全屏requestFullScreen
btnScreen.onclick = function(){ myAudio.webkitRequestFullScreen(); }
loop 循环
myAudio.loop = true;
volumechange音量改变
myAudio.addEventListener('volumechange',function(){ console.log('音频的声音改变了') });
timeupdate音频正在播放状态
myAudio.addEventListener('timeupdate',function(){ console.log('音频正在播放中...') })
自定义mp3播放器
放图
<!doctype html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> *{margin: 0;padding: 0;list-style: none;} .outerNode{width: 505px;height: 406px;position: absolute;left: 50%;top: 50%;margin: -204px 0 0 -253.5px;border: 1px solid #a6a18d;border-radius:8px;box-shadow: 0 0 16px #a6a18d; } .innerNode{width: 503px;height: 405px;border-top:1px solid #e1d1b9;border-left:1px solid #ceccbf;border-radius: 8px;overflow: hidden;border-right:1px solid #ceccbf; } .topNode{width: 100%;height: 198px;border-bottom: 1px solid #787463;background: url(music/pic/fmt01.jpg) center center;background-size:cover; transition:.7s;position: relative;} .lineNode{ width: 100%;height: 46px;border-top: 1px solid #f9f7ee;border-bottom: 1px solid #a29d8a;background: url(musicimage/linebg.jpg) repeat-x; } .progressNode{width: 440px;height: 18px;float: left;margin:13px 0 0 28px;background: url(musicimage/progressbg.jpg) repeat-x;position: relative; } .progressNode .progressleft{ width: 7px;height: 100%;position: absolute;left: 0; background: url(musicimage/leftNode.jpg); } .progressNode .progressright{ width: 7px;height: 100%;position: absolute;right: 0; background: url(musicimage/rightNode.jpg); } .bottomNode{ width: 100%;height: 157px;border-top: 1px solid #a29d8a; background: url(musicimage/bottombg.jpg) repeat-x;position: relative; } .lastNode{width: 75px;height: 74px;position: absolute;background: url(musicimage/lastBg.png) no-repeat;left: 118px;top: 39px;cursor: pointer;} .playNode{width: 95px;height: 94px;position: absolute;background: url(musicimage/playNode.png) no-repeat;left: 202px;top: 29px;cursor: pointer;} .nextNode{width: 75px;height: 74px;background: url(musicimage/rightbg.png) no-repeat;position: absolute;left: 306px;top: 39px;cursor: pointer;} .volumeNode{width: 37px;height: 32px;background: url(musicimage/volume.png) no-repeat; position: absolute;right: 43px;top: 58px;cursor: pointer;} .no_volumeNode{width: 37px;height: 32px;background: url(musicimage/no_volume.png) no-repeat; position: absolute;right: 43px;top: 58px;cursor: pointer;} .trueLine{position: absolute;left: 3px;top: 2px;height: 12px;width: 0%; background: url(musicimage/green_bg.png) repeat-x;border-radius: 6px; border-right: 1px solid #787463; } .musicName{color: white;position: absolute;bottom: 2px;left: 5px;} </style> </head> <body> <!-- outerNode 最外层的元素 --> <div class='outerNode'> <!-- innerNode 内层元素 --> <div class='innerNode'> <!-- topNode 封面图元素 --> <div class='topNode'> <!-- 音乐名称 --> <div class='musicName'></div> </div> <!-- lineNode 进度条元素 --> <div class='lineNode'> <!-- 进度条--> <div class='progressNode'> <div class='progressleft'></div> <div class='progressright'></div> <!-- 真正的进度条 --> <div class='trueLine'></div> </div> </div> <!-- bottomNode 空间元素 --> <div class='bottomNode'> <!-- lastNode 上一曲的按钮--> <div class='lastNode'></div> <!-- playNode 播放暂停的按钮 --> <div class='playNode'></div> <!-- nextNode 下一曲的按钮 --> <div class='nextNode'></div> <!-- volumeNode 静音或非静音的按钮--> <div class='volumeNode'></div> </div> </div> </div> <script type="text/javascript"> //播放暂停的按钮 //playBln 控制播放暂停的布尔值 var playBtn = document.querySelector('.playNode'), playBln = true, //控制声音的按钮 //volumeBln 控制声音的布尔值 volumeNode = document.querySelector('.volumeNode'), volumeBln = true, //进度条的选择器 trueLine = document.querySelector('.trueLine'), //进度条外层的元素 progressNode = document.querySelector('.progressNode'), //最外层元素 outerNode = document.querySelector('.outerNode'), //选择一下封面背景 topNode = document.querySelector('.topNode'), //下一首歌的按钮 nextNode = document.querySelector('.nextNode'), //上一首歌的按钮 lastNode = document.querySelector('.lastNode'), //音乐名称 musicName = document.querySelector('.musicName'); //给播放器添加js //创建audio对象 var myAudio = new Audio(); //给audio对象一个 src //所有的数据存在数组里面 let allMusic = [{ 'MusicSrc':'music/mus/AcousticGuitar1.mp3', 'MusicPic':'music/pic/fmt01.jpg', 'MusicName':'AcousticGuitar1' },{ 'MusicSrc':'music/mus/AmazingGrace.mp3', 'MusicPic':'music/pic/fmt02.png', 'MusicName':'AmazingGrace' },{ 'MusicSrc':'music/mus/FeelsGood2B.mp3', 'MusicPic':'music/pic/fmt03.jpg', 'MusicName':'FeelsGood2B' },{ 'MusicSrc':'music/mus/FunBusyIntro.mp3', 'MusicPic':'music/pic/fmt04.jpg', 'MusicName':'FunBusyIntro' },{ 'MusicSrc':'music/mus/GreenDaze.mp3', 'MusicPic':'music/pic/fmt05.jpg', 'MusicName':'GreenDaze' },{ 'MusicSrc':'music/mus/Limosine.mp3', 'MusicPic':'music/pic/fmt06.jpg', 'MusicName':'Limosine' }],Index = 0; myAudio.src = allMusic[Index].MusicSrc; //给封面赋值 topNode.style.backgroundImage = 'url('+allMusic[Index].MusicPic+')'; //给音乐名称 musicName.innerHTML = allMusic[Index].MusicName; //谷歌浏览器不允许直接play //myAudio.play(); //播放暂停的事件 playBtn.onclick = function(){ //myAudio.play(); playBln = !playBln; if(playBln == false){ myAudio.play(); } else{ myAudio.pause(); } }; //声音的事件 volumeNode.onclick = function(){ volumeBln = !volumeBln; if(volumeBln == false){ myAudio.volume = 0; this.className = 'no_volumeNode'; } else{ myAudio.volume = 1; this.className = 'volumeNode'; } }; //播放时 进度条的长度控制计算 myAudio.addEventListener('timeupdate',function(){ trueLine.style.width = myAudio.currentTime / myAudio.duration * 100 + '%'; }); //点击progressNode元素 让进度条直接到达这个位置 progressNode.onclick = function(e){ var ev = e || event; //算法 就是 算出 点击的位置 在 外层进度条的 多少像素 //需要一个鼠标坐标点 减去 外层元素的 offsetLeft 和 最外层元素的offsetLeft // 320秒 * 0.50 = 160秒 myAudio.currentTime = myAudio.duration * ((ev.clientX - (this.offsetLeft + outerNode.offsetLeft))/this.offsetWidth); trueLine.style.width = ((ev.clientX - (this.offsetLeft + outerNode.offsetLeft))/this.offsetWidth) * 100 + '%'; }; //下一首歌的事件 nextNode.onclick = function(){ Index ++; if(Index == allMusic.length){ Index = 0; } MusicPlayFn(); }; //音乐播放的函数 function MusicPlayFn(){ myAudio.src = allMusic[Index].MusicSrc; myAudio.currentTime = 0; trueLine.style.width = '0%'; if(playBln == false){ myAudio.play(); } else{ myAudio.pause(); } //给封面赋值 topNode.style.backgroundImage = 'url('+allMusic[Index].MusicPic+')'; //给音乐名称 musicName.innerHTML = allMusic[Index].MusicName; } //上一首歌的点击事件 lastNode.onclick = function(){ Index --; if(Index == -1){ Index = allMusic.length-1; } MusicPlayFn(); }; </script> </body> </html>
总结
以上所述是小编给大家介绍的HTML5自定义mp3播放器源码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
html5,音频,mp3,播放器
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]