视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
基于JavaScript实现简单的音频播放功能
2020-11-27 22:22:01 责编:小采
文档

现效果如下:

由于我这边不需要其他按钮,就没写

数据是由后台提供,在这做了个小列子

后台代码

public ActionResult MusicPlayer(int musicId=0) {
 MusicPlayerModel model = new MusicPlayerModel();
 switch (musicId)
 {
 default:
 model.MusicName = "Believe-动画《海贼王》";
 model.CoverImg = "/Content/Music/Believe-cover.jpg";
 model.FileUrl = "/Content/Music/Believe.mp3";
 model.MusicStartSecond = 0;
 model.MusicEndSecond = 227;
 break;
 case 1:
 model.MusicName = "梦回还-动画《狐妖小红娘》";
 model.CoverImg = "/Content/Music/梦回还-cover.jpg";
 model.FileUrl = "/Content/Music/梦回还.mp3";
 model.MusicStartSecond = 0;
 model.MusicEndSecond = 250;
 break;
 }
 return View(model);
 }

页面代码

@using FunctionTest.Web.Areas.Function.Models;
@model MusicPlayerModel
@{
 ViewBag.Title = "MusicPlayer";
 Layout = "~/Areas/Function/Views/Shared/_FunctionLayout.cshtml";
}
<link href="~/Assets/Function/MusicPlayer/musicPlayer.css" rel="external nofollow" rel="stylesheet" />
<script src="~/Assets/Function/MusicPlayer/musicPlayer.js"></script>
<div class="img-wapper">
 <img src="@Model.CoverImg" />
</div>
<div id="player-wapper" class="player-wapper">
 <div class="cover-wapper">
 <img src="@Model.CoverImg" />
 <div class="play">
 <i></i>
 </div>
 </div>
 <div class="info-wapper">
 <div class="title">@Model.MusicName</div>
 <audio id="audio-player" src="@Model.FileUrl" data-src="@Model.FileUrl" data-start="@Model.MusicStartSecond" data-end="@Model.MusicEndSecond" ></audio>
 <div class="audio-progress">
 <span id="start-time" class="start-time">00:00</span>
 <div id="progress" class="progress">
 <span id="player-progress-bar" class="bar">
 <i></i>
 </span>
 </div>
 <span id="end-time" class="end-time">00:00</span>
 </div>
 </div>
</div>

Js

;$(function () {
 var $playerWapper = $("#player-wapper"),
 $audioPlay = $("#audio-player"),
 startSecond = $audioPlay.data("start"),//默认开始时间(秒)
 endSecond = $audioPlay.data("end"),//默认结束时间(秒)
 playSecond = startSecond,//已播放时间(秒)
 surplusSecond = endSecond,//剩余时间(秒)
 audoiTimer = null;
 LoadingTime();
 Playing();
 //通过点击进度条实现播放跳转
 $(".progress").click(function (e) {
 //获取当前鼠标相对进度条的X坐标
 var positionX = e.pageX - $(this).offset().left; 
 var width = $(this).width();
 //进度条的X坐标/进度条宽度获取播放占比
 var progess = (positionX / width).toFixed(2);
 $("#player-progress-bar").css("width", progess);
 //播放占比*总时间获取已播放时间
 playSecond = parseInt(progess * endSecond);
 surplusSecond = endSecond - playSecond;
 //播放器跳转/跟新播放时间
 $audioPlay[0].currentTime = playSecond;
 LoadingTime();
 })
 //播放按钮点击事件
 $(".play").click(function () {
 if ($playerWapper.hasClass("playing")) {
 Pause();
 }
 else {
 Playing();
 }
 })
 //开始/继续播放
 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); //每个1秒执行一次
 }
 //暂停播放
 function Pause() {
 $playerWapper.removeClass("playing");
 $playerWapper.addClass("pause");
 window.clearInterval(audoiTimer);
 $audioPlay[0].pause();
 }
 //加载时间和进度条
 function LoadingTime() {
 $("#start-time").html(secondToTime(playSecond));
 $("#end-time").html(secondToTime(surplusSecond));
 $("#player-progress-bar").css("width", Percentage(playSecond, endSecond));
 }
 //计算百分比
 function Percentage(second1, second2) {
 return (Math.round(second1 / second2 * 10000) / 100+ "%");// 小数点后两位百分比
 }
 //时间转换,将秒转为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;
 }
})

总结

以上所述是小编给大家介绍的基于JavaScript实现简单的音频播放功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

下载本文
显示全文
专题