Aplayer相关
Aplayer相关
模板
1 | <link rel="stylesheet" href="APlayer.min.css"> |
1 | const ap = new APlayer({ |
参数
名称 | 默认值 | 描述 |
---|---|---|
container | document.querySelector('.aplayer') | 播放器容器元素 |
fixed | false | 开启吸底模式, 详情 |
mini | false | 开启迷你模式, 详情 |
autoplay | false | 音频自动播放 |
theme | '#b7daff' | 主题色 |
loop | 'all' | 音频循环播放, 可选值: 'all', 'one', 'none' |
order | 'list' | 音频循环顺序, 可选值: 'list', 'random' |
preload | 'auto' | 预加载,可选值: 'none', 'metadata', 'auto' |
volume | 0.7 | 默认音量,请注意播放器会记忆用户设置,用户手动设置音量后默认音量即失效 |
audio | - | 音频信息, 应该是一个对象或对象数组 |
audio.name | - | 音频名称 |
audio.artist | - | 音频艺术家 |
audio.url | - | 音频链接 |
audio.cover | - | 音频封面 |
audio.lrc | - | 详情 |
audio.theme | - | 切换到此音频时的主题色,比上面的 theme 优先级高 |
audio.type | 'auto' | 可选值: 'auto', 'hls', 'normal' 或其他自定义类型, 详情 |
customAudioType | - | 自定义类型,详情 |
mutex | true | 互斥,阻止多个播放器同时播放,当前播放器播放时暂停其他播放器 |
lrcType | 0 | 详情 |
listFolded | false | 列表默认折叠 |
listMaxHeight | - | 列表最大高度 |
storageName | 'aplayer-setting' | 存储播放器设置的 localStorage key |
播放器
播放列表
listFolded
参数指明列表是否默认折叠,listMaxHeight
参数指明列表最大高度。
1 | const ap = new APlayer({ |
吸底模式
APlayer 可以通过吸底模式固定在页面底部,这种模式跟普通模式有很大不同。
1 | const ap = new APlayer({ |
迷你模式
如果你没有足够空间来放置正常模式的播放器,那么你可以考虑使用迷你模式。
==请注意迷你模式与吸底模式冲突。==
1 | const ap = new APlayer({ |
歌词
Aplayer
有三种方式传递歌词,使用 lrcType
参数指明:
lrcType: 1
:将歌词放入JS字符串中,放置在audio
中:1
2
3
4
5
6
7
8
9
10container: document.getElementById('aplayer'),
lrcType: 1,
audio: {
name: 'name',
artist: 'artist',
url: 'demo.mp3',
cover: 'demo.jpg',
lrc: '[00:00.00]APlayer\n[00:04.01]is\n[00:08.02]amazing'
}
});lrcType: 2
:将歌词放入HTML文件中:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16<link rel="stylesheet" href="APlayer.min.css">
<div id="player">
<pre class="aplayer-lrc-content">
[00:00.00]APlayer audio1
[00:04.01]is
[00:08.02]amazing
<!-- ... -->
</pre>
<pre class="aplayer-lrc-content">
[00:00.00]APlayer audio2
[00:04.01]is
[00:08.02]amazing
<!-- ... -->
</pre>
</div>
<script src="APlayer.min.js"></script>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18const ap = new APlayer({
container: document.getElementById('aplayer'),
lrcType: 2,
audio: [[
{
name: 'name1',
artist: 'artist1',
url: 'url1.mp3',
cover: 'cover1.jpg'
},
{
name: 'name2',
artist: 'artist2',
url: 'url2.mp3',
cover: 'cover2.jpg'
}
]]
});lrcType: 3
:把歌词放到 LRC 文件里,音频播放时会加载对应的 LRC 文件:这里的
LRC
文件需要为本地文件,联网获取的办法失效了。1
2
3
4
5
6
7
8
9
10
11const ap = new APlayer({
container: document.getElementById('aplayer'),
lrcType: 3,
audio: {
name: 'name',
artist: 'artist',
url: 'demo.mp3',
cover: 'demo.jpg',
lrc: 'lrc.lrc'
}
});
==推荐使用第三种方式==
歌词格式
支持下面格式的歌词:
1 | [mm:ss]APlayer |
API
APlayer.version
: 静态属性, 返回 APlayer 的版本号ap.play()
: 播放音频ap.pause()
: 暂停音频ap.seek(time: number)
: 跳转到特定时间,时间的单位为秒1
ap.seek(100);
ap.toggle()
: 切换播放和暂停ap.on(event: string, handler: function)
: 绑定音频和播放器事件,详情ap.volume(percentage: number, nostorage: boolean)
: 设置音频音量1
ap.volume(0.1, true);
ap.theme(color: string, index: number)
: 设置播放器主题色, index 默认为当前音频的 index1
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 可以取消通知自动隐藏1
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)
: 添加一个或几个新音频到播放列表
1
2
3
4
5
6
7
8ap.list.add([{
name: 'name',
artist: 'artist',
url: 'url.mp3',
cover: 'cover.jpg',
lrc: 'lrc.lrc',
theme: '#ebd0c2'
}]);ap.list.remove(index: number)
: 移除播放列表中的一个音频
1
ap.list.remove(1);
ap.list.switch()
: 切换到播放列表里的其他音频
1
ap.list.switch(1);
ap.list.clear()
: 清空播放列表
ap.audio
: 原生 audioap.audio.currentTime
: 返回音频当前播放时间ap.audio.duration
: 返回音频总时间ap.audio.paused
: 返回音频是否暂停- 支持大多数原生audio接口
事件绑定
1 | ap.on(event, handler) |
音频事件
- abort
- canplay
- canplaythrough
- durationchange
- emptied
- ended
- error
- loadeddata
- loadedmetadata
- loadstart
- mozaudioavailable
- pause
- play
- playing
- progress
- ratechange
- seeked
- seeking
- stalled
- suspend
- timeupdate
- volumechange
- waiting
播放器事件
- listshow
- listhide
- listadd
- listremove
- listswitch
- listclear
- noticeshow
- noticehide
- destroy
- lrcshow
- lrchide
MSE支持(HTML5 媒体源扩展)
(译) HTML5 媒体源扩展(MSE):把影视制作级别的视频格式带入 Web
HLS
需要在 APlayer.min.js
前面加载 hls.js。
1 | <link rel="stylesheet" href="APlayer.min.css"> |
1 | const ap = new APlayer({ |
1 | // 另一种方式,使用 customAudioType |
根据封面自适应主题色
需要额外加载 color-thief.js
1 | <link rel="stylesheet" href="APlayer.min.css"> |
1 | const ap = new APlayer({ |
CDN
常见问题
为什么播放器不能在手机上自动播放?
大多数移动端浏览器禁止了音频自动播放。