基于JavaScript实现简单的音频播放功能


Posted in Javascript onJanuary 07, 2018

现效果如下:

基于JavaScript实现简单的音频播放功能

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

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

后台代码

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实现简单的音频播放功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
jquery动画3.创建一个带遮罩效果的图片走廊
Aug 24 Javascript
Node.js 的异步 IO 性能探讨
Oct 08 Javascript
JavaScript动态设置div的样式的方法
Dec 26 Javascript
jQuery中的AjaxSubmit使用讲解
Sep 25 Javascript
原生ajax处理json格式数据的实例代码
Dec 25 Javascript
Bootstrap轮播图学习使用
Feb 10 Javascript
React 子组件向父组件传值的方法
Jul 24 Javascript
ES6扩展运算符的用途实例详解
Aug 20 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
Dec 15 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
Sep 04 jQuery
浅谈vue 单文件探索
Sep 05 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
Feb 23 Javascript
js实现复制功能(多种方法集合)
Jan 06 #Javascript
tangram.js库实现js类的方式实例分析
Jan 06 #Javascript
JavaScript寄生组合式继承实例详解
Jan 06 #Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 #jQuery
JS实现非首屏图片延迟加载的示例
Jan 06 #Javascript
jQuery中库的引用方法
Jan 06 #jQuery
基于JavaScript中标识符的命名规则介绍
Jan 06 #Javascript
You might like
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
PHP转换文本框内容为HTML格式的方法
2016/07/20 PHP
微信支付的开发流程详解
2016/09/13 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
详解vue渲染函数render的使用
2017/12/12 Javascript
手把手教你vue-cli单页到多页应用的方法
2018/05/31 Javascript
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
python 自动重连wifi windows的方法
2018/12/18 Python
Python代码太长换行的实现
2019/07/05 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
学生打架检讨书大全
2014/01/23 职场文书
领班岗位职责范文
2014/02/06 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
2014年幼儿园重阳节活动方案
2014/09/16 职场文书
全陪导游词
2015/02/04 职场文书
繁星春水读书笔记
2015/06/30 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
导游词之临安白水涧
2019/11/05 职场文书