1、前言

Aplater.js是一款可爱、漂亮的Js音乐播放器,以前就了解过也弄过一些,现在就用mp3的格式来在.Net里面开发。管网 https://aplayer.js.org/

2、入手

在项目里面只要添加一个jQuery.js跟APlayer.min.js 跟APlayer.min.css就可以了。看一个简单的栗子:

<link rel="stylesheet" href="~/Scripts/AplayerJSCS/APlayer.min.css">
<script src="~/Scripts/jquery-3.3.1.js"></script>
<script src="~/Scripts/AplayerJSCS/APlayer.min.js"></script>
<div id="aplayer"></div>
<script type="text/javascript">
const ap = new APlayer({
container: document.getElementById('aplayer'),
fixed: false, //开启吸底模式
mimi: false, //开启迷你模式
autoplay: false, //音频自动播放
theme: '#b7daff', //主题色
loop: 'all', //音频循环播放, 可选值: 'all', 'one', 'none'
order: 'list', //音频循环顺序, 可选值: 'list', 'random'
preload: 'auto', //预加载,可选值: 'none', 'metadata', 'auto'
volume: 0.7, //默认音量,请注意播放器会记忆用户设置,用户手动设置音量后默认音量即失效
mutex: true, //互斥,阻止多个播放器同时播放,当前播放器播放时暂停其他播放器
//customAudioType: //自定义类型,详情
listFolded: false, //列表默认折叠
listMaxHeight: 900, // 列表最大高度
storageName: 'aplayer-setting', //存储播放器设置的 localStorage key
lrcType: 1, //歌词文件形式1歌词直接复制进来,2 html形式,3数据库获取格式跟下面的一样
//音频信息, 应该是一个对象或对象数组
audio: [{
name: '全世界宣布爱你伴奏',//音乐名称
artist: '孙子涵',//歌手
url: '/AttachFile/qsjxban.mp3',//地址
lrc: '[ar:孙子涵、李潇潇][ti:全世界宣布爱你][00:00.09]孙子涵、李潇潇-全世界宣布爱你[00:00.84]作词:孙子涵[00:01.04]作曲:孙子涵[00:17.68]在躲过雨的香樟树下等你[00:21.87]在天桥上的转角擦肩而遇[00:26.25]制造每个邂逅的缘分累积[00:30.62]终于可以牵你的手保护你[00:35.00]有你的地方就格外的清新[00:39.29]想着你我的嘴角都会扬起[00:43.73]倾城的轮廓[00:46.25]沾满我的憧憬[00:48.47]天空都变透明[00:50.58]听到你的亲口允许[00:54.62]对全世界宣布爱你[00:58.95]我只想和你在一起[01:03.33]这颗心[01:04.44]没畏惧[01:05.50]太坚定[01:07.76]庆幸让我能够遇见你[01:12.05]就算全世界都否定[01:16.48]我也要跟你在一起[01:20.86]想牵手[01:21.92]想拥抱[01:23.03]想爱你[01:25.14]天崩地裂也要在一起[01:38.29]有你的地方就格外的清新[01:42.57]想着你我的嘴角都会扬起[01:47.11]倾城的轮廓[01:49.48]沾满我的憧憬[01:51.70]天空都变透明[01:53.86]听到你的亲口允许[01:57.84]对全世界宣布爱你[02:02.22]我只想和你在一起[02:06.59]这颗心[02:07.65]没畏惧[02:08.76]太坚定[02:11.02]庆幸让我能够遇见你[02:15.31]就算全世界都否定[02:19.69]我也要跟你在一起[02:24.03]想牵手[02:25.09]想拥抱[02:26.24]想爱你[02:28.47]天崩地裂也要在一起[02:32.94]对全世界宣布爱你[02:37.17]我只想和你在一起[02:41.50]这颗心[02:42.61]没畏惧[02:43.67]太坚定[02:45.96]庆幸让我能遇见你[02:50.34]对全世界宣布爱你[02:54.68]我只想和你在一起[02:59.01]这颗心[03:00.07]没畏惧[03:01.23]太坚定[03:03.29]庆幸让我能够遇见你[03:07.69]就算全世界都否定[03:12.02]我也要跟你在一起[03:16.40]想牵手[03:17.45]想拥抱[03:18.51]想爱你[03:20.87]天崩地裂也要在一起[03:27.22]宣布爱你[03:29.33]想在一起[03:36.55]已坚定[03:43.39]爱你[03:44.60]想在一起',
cover: '/AttachFile/qsjxban.png'//封面图片地址
}]
}); </script>

这是标椎的格式了,代码里面也都有注释,里面差不多的属性都在上面。  我填写的基本都是默认值,最简单直接的都是这样的

const ap = new APlayer({
container: document.getElementById('aplayer'),
audio: [{
name: 'name',//名称
artist: 'artist',//艺术家
url: 'url.mp3',//歌曲地址
cover: 'cover.jpg'//封面地址
}]
});

3、把音乐信息放在服务器,从数据库获取的方式

先看数据库信息

 数据库简单明了,后台取数据如下,这里特别注意一下 因为前段调用只要name,artist,url,lrc,cover所以多的信息不能传过去,前台的格式又是audio:[{歌曲信息},{歌曲信息},{歌曲信息},{歌曲信息}]这样的,所有后台就去这几个值,然后转Json字符串过去。

/// <summary>
/// 获取音乐列表
/// </summary>
/// <returns>json</returns>
[HttpGet]
public ActionResult GetMusicList()
{
var data = db.MusicInfo.Select(it=> new {
name = it.Name,
artist = it.Artist,
url = it.LinkUrl,
lrc = it.Lrc,
cover = it.LinkCover,
//type= "hls"
}).ToList();
var ret = JsonConvert.SerializeObject(data);
return Json(ret,JsonRequestBehavior.AllowGet);
}
<h5>音乐播放器2------>数据库获取</h5>
<div id="aplayer2"></div>
<script type="text/javascript">
//音乐播放器2------>数据库获取
$(document).ready(function () {
$.ajax({
type: "get",
url: "/MusicList/GetMusicList",
async: true,
success: function (data) {
var ret = JSON.parse(data);
console.log(ret);
const app = new APlayer({
container: document.getElementById('aplayer2'),
fixed: false,//吸底模式
mini: false,//迷你模式
autoplay: true,//音频自动播放
lrcType: 1,//歌词样式
preload: 'auto',//预加载,可选值: 'none', 'metadata', 'auto'
volume: 0.7, //默认音量,请注意播放器会记忆用户设置,用户手动设置音量后默认音量即失效
listFolded: false,//列表折叠
listMaxHeight: 500,//列表最大高度
mutex: true,//互斥,阻止多个播放器同时播放,当前播放器播放时暂停其他播放器
audio: ret,//播放列表
});
}
}); });
</script>

前台这样处理的。都有注释

4、做成我博客园这样的播放器

利用易云 成歌单列表ID获取的形式:除主要的js,cs外之外还要多加一个js 命名看个人了,我家在下面了,主要的js。css官网有这就不贴了。这播放器还支持HLS(HTTP Live Streaming 把整个流分成一个个小的基于 HTTP 的文件来下载,每次只下载一些)。官网也有api。我试了一下,就不介绍了。

'use strict';
console.log('\n %c MetingJS v1.2.0 %c https://github.com/metowolf/MetingJS \n', 'color: #fadfa3; background: #030307; padding:5px 0;', 'background: #fadfa3; padding:5px 0;');
var aplayers = [],
loadMeting = function () {
function a(a, b) {
var c = {
container: a,
audio: b,
mini: null,
fixed: null,
autoplay: !1,
mutex: !0,
lrcType: 3,
listFolded: !1,
preload: 'auto',
theme: '#2980b9',
loop: 'all',
order: 'list',
volume: null,
listMaxHeight: null,
customAudioType: null,
storageName: 'metingjs'
};
if (b.length) {
b[0].lrc || (c.lrcType = 0);
var d = {};
for (var e in c) {
var f = e.toLowerCase();
(a.dataset.hasOwnProperty(f) || a.dataset.hasOwnProperty(e) || null !== c[e]) && (d[e] = a.dataset[f] || a.dataset[e] || c[e], ('true' === d[e] || 'false' === d[e]) && (d[e] = 'true' == d[e]))
}
aplayers.push(new APlayer(d))
}
}
var b = 'https://api.i-meto.com/meting/api?server=:server&type=:type&id=:id&r=:r';
'undefined' != typeof meting_api && (b = meting_api);
for (var f = 0; f < aplayers.length; f++)
try {
aplayers[f].destroy()
} catch (a) {
console.log(a)
}
aplayers = [];
for (var c = document.querySelectorAll('.aplayer'), d = function () {
var d = c[e],
f = d.dataset.id;
if (f) {
var g = d.dataset.api || b;
g = g.replace(':server', d.dataset.server),
g = g.replace(':type', d.dataset.type),
g = g.replace(':id', d.dataset.id),
g = g.replace(':auth', d.dataset.auth),
g = g.replace(':r', Math.random());
var h = new XMLHttpRequest;
h.onreadystatechange = function () {
if (4 === h.readyState && (200 <= h.status && 300 > h.status || 304 === h.status)) {
var b = JSON.parse(h.responseText);
a(d, b)
}
},
h.open('get', g, !0),
h.send(null)
} else if (d.dataset.url) {
var i = [{
name: d.dataset.name || d.dataset.title || 'Audio name',
artist: d.dataset.artist || d.dataset.author || 'Audio artist',
url: d.dataset.url,
cover: d.dataset.cover || d.dataset.pic,
lrc: d.dataset.lrc,
type: d.dataset.type || 'auto'
}];
a(d, i)
}
}, e = 0; e < c.length; e++)
d()
};
document.addEventListener('DOMContentLoaded', loadMeting, !1);

HTML代码,属性油性漆的自己研究看看 。

<h5>音乐播放器3------>获取外部链接(网易云这里)------->左下角的播放器</h5>
<div id="aplayer" class="aplayer" data-id="歌单列表ID" data-server="netease" data-type="playlist" data-fixed="true" data-listfolded="true" data-order="random" data-theme="#F58EA8"></div>

 这个区网易云 登录上去,把喜欢的歌曲弄在一个收藏列表,然后点击个人中心---->我的主页------>歌单选择----->列表生成外链播放器(不要点击我的音乐进去 没有那个链接真的坑^_^),生成以后拉到最下面,有个HTML代码把里面的ID搞过来就可以了

有兴趣的可以试试,看看效果。

 

 我以前写的一个网址 有情趣的看看效果,这个就是上面数据库里面的  http://www.yijianlan.com:8066/ 

5、播放器的相关API

  • APlayer.version: 静态属性, 返回 APlayer 的版本号

  • ap.play(): 播放音频

  • ap.pause(): 暂停音频

  • ap.seek(time: number): 跳转到特定时间,时间的单位为秒

    ap.seek(100);
  • ap.toggle(): 切换播放和暂停

  • ap.on(event: string, handler: function): 绑定音频和播放器事件,详情

  • ap.volume(percentage: number, nostorage: boolean): 设置音频音量

    ap.volume(0.1, true);
  • ap.theme(color: string, index: number): 设置播放器主题色, index 默认为当前音频的 index

    ap.theme('#000', 0);
  • ap.setMode(mode: string): 设置播放器模式,mode 取值应为 'mini' 或 'normal'

  • ap.mode: 返回播放器当前模式,'mini' 或 'normal'

  • ap.notice(text: string, time: number, opacity: number): 显示通知,时间的单位为毫秒,默认时间 2000 毫秒,默认透明度 0.8,设置时间为 0 可以取消通知自动隐藏

    ap.notice('Amazing player', 2000, 0.8);
  • ap.skipBack(): 切换到上一首音频

  • ap.skipForward(): 切换到下一首音频

  • ap.destroy(): 销毁播放器

  • ap.lrc

    • ap.lrc.show(): 显示歌词

    • ap.lrc.hide(): 隐藏歌词

    • ap.lrc.toggle(): 显示/隐藏歌词

  • ap.list

    • ap.list.show(): 显示播放列表

    • ap.list.hide(): 隐藏播放列表

    • ap.list.toggle(): 显示/隐藏播放列表

    • ap.list.add(audios: array | object): 添加一个或几个新音频到播放列表

    ap.list.add([{
    name: 'name',
    artist: 'artist',
    url: 'url.mp3',
    cover: 'cover.jpg',
    lrc: 'lrc.lrc',
    theme: '#ebd0c2'
    }]);
    • ap.list.remove(index: number): 移除播放列表中的一个音频
    ap.list.remove(1);
    • ap.list.switch(): 切换到播放列表里的其他音频
    ap.list.switch(1);
    • ap.list.clear(): 清空播放列表
  • ap.audio: 原生 audio

    • ap.audio.currentTime: 返回音频当前播放时间

    • ap.audio.duration: 返回音频总时间

    • ap.audio.paused: 返回音频是否暂停

    • 支持大多原生audio接口

 

Asp.Net MVC中Aplayer.js音乐播放器的使用的更多相关文章

  1. 基于jplayer实现歌词同步的JS音乐播放器效果

    分享一款基于jplayer实现歌词同步的JS音乐播放器效果.这是一款基于jQuery实现的音乐播放器功能代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <textare ...

  2. js插件---10个免费开源的JS音乐播放器插件

    js插件---10个免费开源的JS音乐播放器插件 一.总结 一句话总结:各种插件都有很多,多去找. 二.js插件---10个免费开源的JS音乐播放器插件 亲测可用 音乐播放器在网页设计中有时候会用到, ...

  3. ASP.NET MVC 中CSS JS压缩合并 功能的使用方法

    通过压缩合并js文件和css文件,可以减少 服务器的响应 次数和 流量,可以大大减小服务器的压力,对网站优化有比较明显的帮助!压缩合并 css 文件和js文件是网站优化的一个 比较常用的方法. ASP ...

  4. 10个免费开源的JS音乐播放器插件

    点这里 音乐播放器在网页设计中有时候会用到,比如一些时尚类.音乐或影视类等项目,但这些 网页播放器 插件比较少见,所以这里为大家整理一个集合,也许会有用到的时候. 下面整理的播放器有些是支持自适应的, ...

  5. js 音乐播放器

    在写之前先说下我遇到得两个问题,第一个问题是,在音乐标签,我希望得是切换数据做到得,但是出了问题,暂时为解决,第二个问题,页面切换时音乐继续播放由卡顿情况,未处理好. 好了,那我们开始做这个音乐播放器 ...

  6. js音乐播放器

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head runat=&quo ...

  7. 22_Android中的本地音乐播放器和网络音乐播放器的编写,本地视频播放器和网络视频播放器,照相机案例,偷拍案例实现

    1 编写以下案例: 当点击了"播放"之后,在手机上的/mnt/sdcard2/natural.mp3就会播放. 2 编写布局文件activity_main.xml <Line ...

  8. js音乐播放器【简洁】

    辞职的第二天没有去找工作还,准备回家. 但到了火车站才发现沃特玛的买的票不是在这个火车站坐. 这就耽误了行程...... 说出来真舒服!!!淦 代码 这里已经上传到码云了,大家可以直接引用. 目前只有 ...

  9. 【Linux_Fedora_应用系列】_1_如何安装音乐播放器和mp3解码

    因为安装环境的不同,Fedora在安装后会安装不同的软件包.通常在安装的时候有多种选择: 1.桌面环境: 适合个人日常使用,安装包含办公软件(Fedora 默认安装Open Office).娱乐影音软 ...

随机推荐

  1. F#周报2019年第47期

    新闻 相遇WebWindow,.NET Core上的跨平台webview类库 使用Bolero在WebAssembly中运行F# 用于你团队代码库的AI辅助IntelliSense Jupyter N ...

  2. (三十八)golang--json(对切片、map、结构体进行序列化)

    JSON(javascript object notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成.key-val JSON是在2001年开始推广的数据格式,目前已 ...

  3. 2019-9-28:渗透测试,基础学习,DNS投毒

    该文章仅供学习,利用方法来自网络文章,仅供参考 DNS劫持 目标机:虚拟机下的win7系统 目标ip:192.168.20.131 目标:使用ettercap进行apr投毒,对win7系统就行,DNS ...

  4. (四十五)golang--反射

    反射基本介绍: (1)反射可以在运行时动态获取变量的各种信息,比如变量的类型.类别: (2)如果是结构体变量,还可以获取结构体本身的信息(包括结构体字段.方法): (3)通过反射,可以修改变量的值,可 ...

  5. JS的引用顺序真的灰常重要

    JS的引用一定要记得顺序,不然常常会被小小的问题卡住很久.

  6. 对照谈-官方spring-boot-starter和自定义starter异同分析

    在前面我讲用spring-boot-starter-mail发邮件的时候,我侧重看的是spring boot发邮件的便利性,今天,我们聊下另外一个方面,spring-boot-starter自身的结构 ...

  7. 为什么 main 方法是 public static void ?

    Main方法是我们学习Java编程语言时知道的第一个方法,你是否曾经想过为什么main方法是public.static.void的.当然,很多人首先学的是C和C++,但是在Java中main方法与前者 ...

  8. 制作属于自己的翻译软件(基于PyQt5+Python+实时翻译)

    目录 制作属于自己的翻译软件(基于PyQt5+Python+实时翻译) 翻译软件上传到github上. 软件截图 主要的思想 界面方面 程序方面 制作属于自己的翻译软件(基于PyQt5+Python+ ...

  9. 关于python中的列表遍历注意事项

    在开发过程中,很容易出现以下的错误: 可以看出:假如删除列表的元素之后直接执行continue,那么遍历的时候就会落下一个元素. 那么怎么解决这个问题呢? 首先 : 我们尝试把continue去掉: ...

  10. SimpleXML使用详解

    SimpleXML使用详解 介绍 SimpleXML提供了一种简单,直观的方法来处理XML.它只有一个单一类型的类,三个函数和六个方法. 使用SimpleXML SimpleXMLElement 类是 ...