Js实现简单的音频播放
现效果如下:

由于我这边不需要其他按钮,就没写
数据是由后台提供,在这做了个小列子
后台代码
public ActionResult MusicPlayer(int musicId=) {
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 = ;
model.MusicEndSecond = ;
break;
case :
model.MusicName = "梦回还-动画《狐妖小红娘》";
model.CoverImg = "/Content/Music/梦回还-cover.jpg";
model.FileUrl = "/Content/Music/梦回还.mp3";
model.MusicStartSecond = ;
model.MusicEndSecond = ;
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="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">:</span>
<div id="progress" class="progress">
<span id="player-progress-bar" class="bar">
<i></i>
</span>
</div>
<span id="end-time" class="end-time">:</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;
}
})
Js实现简单的音频播放的更多相关文章
- js 实现文字转音频播放
var msg = new SpeechSynthesisUtterance("hello World"); console.log(msg); window.speechSynt ...
- 最简单的基于FFMPEG+SDL的音频播放器 ver2 (采用SDL2.0)
===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...
- 最简单的基于FFMPEG+SDL的音频播放器 ver2 (採用SDL2.0)
===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...
- [小程序开发] 微信小程序audio音频播放组件+api_wx.createAudioContext
引言: audio是微信小程序中的音频组件,可以轻松实现小程序中播放/停止音频等自定义动作. 附上微信小程序audio组件的相关属性说明:https://mp.weixin.qq.com/debug/ ...
- ios开发——实用技术篇&网络音频播放
网络音频播放 在日常的iOS开发中,我们通常会遇到媒体播放的问题,XCode中已经为我们提供了功能非常强大的AVFoundation框架和 MediaPlayer框架.其中AVFoundation框架 ...
- IOS 音频播放
iOS音频播放 (一):概述 前言 从事音乐相关的app开发也已经有一段时日了,在这过程中app的播放器几经修改我也因此对于iOS下的音频播放实现有了一定的研究.写这个系列的博客目的一方面希望能够抛砖 ...
- 第38章 I2S—音频播放与录音输入—零死角玩转STM32-F429系列
第38章 I2S—音频播放与录音输入 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...
- 11.QT-ffmpeg+QAudioOutput实现音频播放器
1.前言 由于QAudioOutput支持的输入数据必须是原始数据,所以播放mp3,WAV,AAC等格式文件,需要解封装后才能支持播放. 而在QT中,提供了QMediaPlayer ...
- IOS开发之简单音频播放器
今天第一次接触IOS开发的UI部分,之前学OC的时候一直在模拟的使用Target-Action回调模式,今天算是真正的用了一次.为了熟悉一下基本控件的使用方法,和UI部分的回调,下面开发了一个特别简易 ...
随机推荐
- 极其简单的用JS在浏览器中创建下载文件的方法
有这样一个需求,在js中动态创建一个页面,然后下载该页面为word文档,研究了一上午,最后发现实现起来如此简单. 在js中创建如下方法:(直接复制即可) function downloadFile(f ...
- Mac中搭建 iOS 的 React Native 环境
手把手教你在Mac中搭建iOS的 React Native环境 http://www.cnblogs.com/damnbird/p/6074607.html 准备工作 1.你需要一台Mac电脑..(这 ...
- package.json和bower的参数解释
package.json和bower的参数解释 一.package.json解释: package.json是用来声明项目中使用的模块,这样新的环境部署时,只要在package.json文件所在的 ...
- C++基础知识-inline、const、mutable、this、static
一.在类定义中实现成员函数inline 类内的成员函实现其实也叫作类内的成员函数定义. 这种直接在类的定义中实现的函数,会被当做inline内联函数来处理. 二.成员函数末尾的const const: ...
- ES6之新增const命令使用方法
hi,我又回来了,今天学习一下const命令. 声明一个常量 const声明一个只读常量,一旦声明,常量的值便不可改变. 例子如下: const food = 12; food = 23; // Un ...
- abp 依赖注入声明
public class SchedulerManager : ISingletonDependency { private ILogger logger; public SchedulerManag ...
- Eclipse下,修改MAVEN 中央仓库地址,解决maven下载慢问题
作用于所有工作空间: 1.逐项打开:eclipse->preference->Maven->User Settings.按窗口中的User Settings文本框显示的路径,创建se ...
- C# string 特殊的引用类型
.Net 框架程序设计(修订版)中有这样一段描述:String类型直接继承自Object,这使得它成为一个引用类型,也就是说线程上的堆栈上不会驻留有任何字符串.(译注:注意这里的“直接继承”.直接继承 ...
- 如何写出优雅的JavaScript代码 ? && 注释
如何写出优雅的JavaScript代码 ? 之前总结过一篇<如何写出优雅的css代码?>, 但是前一段时间发现自己的js代码写的真的很任性,没有任何的优雅可言,于是这里总结以下写js时应当 ...
- 029-FastDFSClient工具栏模板
模板一: package cn.e3mall.common.utils; import org.csource.common.NameValuePair; import org.csource.fas ...