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判断手机端操作系统的两种方法
//判断手机端操作系统(Andorid/IOS),并自动跳转相应下载界面 androidURL ="http://xxx/xxx.apk"; var browser = { ver ...
- AWS 推出长期支持的 OpenJDK 免费分发版本 —— Amazon Corretto
简评:听说 Oracle JDK 要收费了,Oracle 要限制 Java 的商业或生产用途,针对这个问题,AWS 将会推出 Amazon Corretto. Java 是 AWS 用户使用的最流行的 ...
- Linux中的任务调度
1.crond,linux中的任务调度器 crond的概念和crontab是不可分割的.crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入 ...
- bzoj4361:isn(dp+容斥+树状数组)
题面 darkbzoj 题解 \(g[i]\)表示长度为\(i\)的非降序列的个数 那么, \[ ans = \sum_{i=1}^{n}g[i]*(n-i)!-g[i+1]*(n-i-1)!*(i+ ...
- Java代码度量分析工具:Designite简介
前言 在Java面向对象课程的学习过程中,我们需要使用度量工具来分析自己程序的代码结构.此类的度量工具有许多,或以插件形式存在于各个IDE中,或以.jar包的形式供用户使用.在这里,笔者向大家简单的介 ...
- 【性能测试】:关于Sockets协议的脚本的开发
一,关于Sockets协议的脚本,首先对报文的解析是一个关键, 报文的解析一般对着接口文档,弄清楚每个字段代表什么意思,如下一段报文,放在data.ws中 "\x00\x00\x01\x5C ...
- [性能测试]:记录一次性能测试,nmon文件收集工具的小问题
问题:今天发现nmon文件分析成excel后,用<NMON抽取结果.excel>无法抓取到数据 解决过程:1,认为是nmon分析文件<nmon analyser v33g.xls&g ...
- windows下python管理右键菜单
实现很简单,不记得什么时候写的了,贴出来希望能有所价值 """ Windows中创建右键菜单 """ import os import sy ...
- Mac服务管理-Launchd(转)
背景: 在Mac下没有像Linux那样有很多的关于init方面的工具,从init的发展历史https://en.wikipedia.org/wiki/Init上可以知道,Mac使用的是Launchd作 ...
- 删除数据库的数据后让id从1开始算
delete from t_AttendanceRecorddbcc checkident('t_AttendanceRecord',reseed,0) truncate table 表名称