這篇文章將為大家詳細(xì)講解有關(guān)基于JavaScript實(shí)現(xiàn)音頻播放功能的方法,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元防城港做網(wǎng)站,已為上家服務(wù),為防城港各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792現(xiàn)效果如下:
由于我這邊不需要其他按鈕,就沒(méi)寫(xiě)
數(shù)據(jù)是由后臺(tái)提供,在這做了個(gè)小列子
后臺(tái)代碼
public ActionResult MusicPlayer(int musicId=0) { MusicPlayerModel model = new MusicPlayerModel(); switch (musicId) { default: model.MusicName = "Believe-動(dòng)畫(huà)《海賊王》"; model.CoverImg = "/Content/Music/Believe-cover.jpg"; model.FileUrl = "/Content/Music/Believe.mp3"; model.MusicStartSecond = 0; model.MusicEndSecond = 227; break; case 1: model.MusicName = "夢(mèng)回還-動(dòng)畫(huà)《狐妖小紅娘》"; model.CoverImg = "/Content/Music/夢(mèng)回還-cover.jpg"; model.FileUrl = "/Content/Music/夢(mèng)回還.mp3"; model.MusicStartSecond = 0; model.MusicEndSecond = 250; break; } return View(model); }
頁(yè)面代碼
@using FunctionTest.Web.Areas.Function.Models; @model MusicPlayerModel @{ ViewBag.Title = "MusicPlayer"; Layout = "~/Areas/Function/Views/Shared/_FunctionLayout.cshtml"; }@Model.MusicName00:0000:00
Js
;$(function () { var $playerWapper = $("#player-wapper"), $audioPlay = $("#audio-player"), startSecond = $audioPlay.data("start"),//默認(rèn)開(kāi)始時(shí)間(秒) endSecond = $audioPlay.data("end"),//默認(rèn)結(jié)束時(shí)間(秒) playSecond = startSecond,//已播放時(shí)間(秒) surplusSecond = endSecond,//剩余時(shí)間(秒) audoiTimer = null; LoadingTime(); Playing(); //通過(guò)點(diǎn)擊進(jìn)度條實(shí)現(xiàn)播放跳轉(zhuǎn) $(".progress").click(function (e) { //獲取當(dāng)前鼠標(biāo)相對(duì)進(jìn)度條的X坐標(biāo) var positionX = e.pageX - $(this).offset().left; var width = $(this).width(); //進(jìn)度條的X坐標(biāo)/進(jìn)度條寬度獲取播放占比 var progess = (positionX / width).toFixed(2); $("#player-progress-bar").css("width", progess); //播放占比*總時(shí)間獲取已播放時(shí)間 playSecond = parseInt(progess * endSecond); surplusSecond = endSecond - playSecond; //播放器跳轉(zhuǎn)/跟新播放時(shí)間 $audioPlay[0].currentTime = playSecond; LoadingTime(); }) //播放按鈕點(diǎn)擊事件 $(".play").click(function () { if ($playerWapper.hasClass("playing")) { Pause(); } else { Playing(); } }) //開(kāi)始/繼續(xù)播放 function Playing() { $playerWapper.addClass("playing"); $playerWapper.removeClass("pause"); $audioPlay[0].play(); audoiTimer = setInterval(function () { playSecond++; surplusSecond--; LoadingTime(); if (surplusSecond <= 0) { playSecond = startSecond; surplusSecond = endSecond; Pause(); } }, 1000); //每個(gè)1秒執(zhí)行一次 } //暫停播放 function Pause() { $playerWapper.removeClass("playing"); $playerWapper.addClass("pause"); window.clearInterval(audoiTimer); $audioPlay[0].pause(); } //加載時(shí)間和進(jìn)度條 function LoadingTime() { $("#start-time").html(secondToTime(playSecond)); $("#end-time").html(secondToTime(surplusSecond)); $("#player-progress-bar").css("width", Percentage(playSecond, endSecond)); } //計(jì)算百分比 function Percentage(second1, second2) { return (Math.round(second1 / second2 * 10000) / 100+ "%");// 小數(shù)點(diǎn)后兩位百分比 } //時(shí)間轉(zhuǎn)換,將秒轉(zhuǎn)為00:00:00格式 function secondToTime(s) { var t; if (s > -1) { var hour = Math.floor(s / 3600); var min = Math.floor(s / 60) % 60; var sec = s % 60; if (hour < 10) { t = '0' + hour + ":"; } else { t = hour + ":"; } if (min < 10) { t += "0"; } t += min + ":"; if (sec < 10) { t += "0"; } t += sec; } return t; } })
關(guān)于“基于JavaScript實(shí)現(xiàn)音頻播放功能的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。