当前位置:首页>博客文章>在博客网站中添加Aplayer音乐播放器

在博客网站中添加Aplayer音乐播放器

🎵 为什么你的博客网站需要一款专属音乐播放器?

有没有那么一首歌,前奏响起瞬间就能击中灵魂?音乐就像时光机,每个旋律都承载着独家记忆。但现实很骨感——心爱的歌曲要么需要VIP,要么直接下架。版权限制和某些平台曲库不全成了音乐爱好者的痛点。

与其受制于人,不如自己动手!本文将手把手教你用技术搭建个人音乐播放器,支持本地歌曲第三方平台资源,让好音乐永远在线。

🔧 开源播放器:Aplayer.js

Aplayer.js 这款开源播放器功能很强大:

  • 歌词同步显示,支持多种歌词格式
  • 进度条精准控制,支持倍速播放
  • 多种循环模式:单曲循环、列表循环、随机播放
  • 音量记忆功能,自动保存用户偏好设置
  • 响应式设计,完美适配移动端

最新版已优化移动端体验,触控操作更加流畅。官网提供了丰富的演示案例,小白也能快速上手。

🎶 音乐资源获取

1 自己下载音乐资源

2025年常用的无损音乐下载渠道:

重要提示:下载资源请遵守版权法规,个人使用为主。如果文件太大,可以用在线工具转换格式,推荐使用 WORTHSEE:https://audio.worthsee.com/

2 借助插件 Meting.js,一键导入主流平台歌单

MetingJS是基于APlayer封装好的插件,开箱即用。最大的优势是一键导入主流平台歌单

  • 支持网易云、QQ音乐、酷狗、虾米、百度等平台解析
  • 自动获取专辑封面和歌词信息
  • 配置简单,几行代码就能搞定
  • 免除自己托管音乐文件的烦恼

💻 手把手搭建播放器

基础APlayer文件(下载地址 https://github.com/MoePlayer/APlayer/):

  • APlayer.min.css – 播放器样式文件
  • APlayer.min.js – 播放器核心脚本

将 Aplayer 插件需要的文件 APlayer.min.js 和 APlayer.min.css 上传到服务器,如果是 WordPress 博客网站,可上传到服务器 wp-content 目录下,然后通过链接 https://IP:PORT/wp-content/Aplayer.min.js ,可以访问到就说明文件上传正确。

当然你也可以直接使用 jsdeliver CDN 方式,更快更方便,但不稳定,可能会失联。

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css">
<script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script>

Aplayer 主要参数说明:

参数默认值描述
containerdocument.querySelector(‘.aplayer’)播放器容器元素
fixedfalse开启吸底模式
minifalse开启迷你模式
autoplayfalse音频自动播放,一般浏览器默认会阻止音频自动播放
theme‘#b7daff’主题色
loop‘all’音频循环播放,值:’all’、’one’、’none’
order‘list’音频循环顺序,值:’list’,’random’
preload‘auto’音频预加载,值: ‘none’, ‘metadata’, ‘auto’
volume0.7默认音量,播放器会记住用户设置,用户自己设置音量后默认音量将失效
showlrctrue歌词是否显示
audio音频,一个音频为对象格式,多个音频为数组格式
audio.name音频名称
audio.artist音频艺术家
audio.url音频链接
audio.cover音频封面
audio.lrc音频歌词
mutextrue防止同时播放多个播放器,当该播放器开始播放时暂停其他播放器
listFoldedfalse列表是否先折叠
listMaxHeight音频列表最大高度

1 Mini播放器功能实现

Mini播放器会自动收起音乐列表,乖巧地停留在屏幕左下角,既不打扰浏览又能随时控制音乐。

如果是使用 WordPress 建的网站:可以在您使用的主题的设置项中找到”自定义代码”或”脚本”选项,把下面的代码粘贴进去就能立即生效。

或者你也可以将代码直接粘贴到 IDE(记得设置编码格式 <meta charset="utf-8">),在浏览器中打开也会可执行,代码实现如下:

<link rel="stylesheet" href="https://www.ilovefree.com/wp-content/APlayer.min.css">
<script src="https://www.ilovefree.com/wp-content/APlayer.min.js"></script>

<div id='aplayer-mini'></div>

<script>
    const apMini = new APlayer({
        element: document.getElementById('aplayer-mini'),
        showlrc: false,
        fixed: true,
        mini: true,
        audio: [{
            title: '稻香',
            author: '周杰伦',
            url: 'https://www.ilovefree.com/wp-content/music/jay-chou/周杰伦-稻香.mp3',
            cover: 'https://www.ilovefree.com/wp-content/music/jay-chou/covers/jay-chou.jpg'
        }]
	});
    apMini.init();
</script>

效果如下:

在博客网站中添加Aplayer音乐播放器

关键参数解析
fixed: true 让播放器悬浮在页面角落
mini: true 启用紧凑模式
audio 数组支持添加多首歌曲,形式如下:

<script>
    const apMini = new APlayer({
        element: document.getElementById('aplayer-mini'),
        showlrc: false,
        fixed: true,
        mini: true,
        audio: [{
            title: '稻香',
            author: '周杰伦',
            url: 'https://www.ilovefree.com/wp-content/music/jay-chou/周杰伦-稻香.mp3',
            cover: 'https://www.ilovefree.com/wp-content/music/jay-chou/covers/jay-chou.jpg'
        },
        {
            title: '给我一首歌的时间',
            author: '周杰伦',
            url: 'https://www.ilovefree.com/wp-content/music/jay-chou/周杰伦-给我一首歌的时间.mp3',
            cover: 'https://www.ilovefree.com/wp-content/music/jay-chou/covers/jay-chou.jpg'
        }]
    });
    apMini.init();
</script>

效果如下:

在博客网站中添加Aplayer音乐播放器

2 全屏播放器实现

全屏播放器可以用更大的界面展示音乐列表等信息,实现也很简单,直接将代码块写在文章内容中,fixed 和 mini 改为默认值 false,代码如下:

<link rel="stylesheet" href="https://www.ilovefree.com/wp-content/APlayer.min.css">
<script src="https://www.ilovefree.com/wp-content/APlayer.min.js"></script>

<div id='aplayer-full'></div>

<script>
    const apFull = new APlayer({
        element: document.getElementById('aplayer-full'),
        showlrc: false,
        fixed: false,
        mini: false,
        preload: 'none', // 提升加载速度
        audio: [{
            title: '稻香',
            author: '周杰伦',
            url: 'https://www.ilovefree.com/wp-content/music/jay-chou/周杰伦-稻香.mp3',
            cover: 'https://www.ilovefree.com/wp-content/music/jay-chou/covers/jay-chou.jpg'
        },
        {
            title: '给我一首歌的时间',
            author: '周杰伦',
            url: 'https://www.ilovefree.com/wp-content/music/jay-chou/周杰伦-给我一首歌的时间.mp3',
            cover: 'https://www.ilovefree.com/wp-content/music/jay-chou/covers/jay-chou.jpg'
        }]
    });
    apFull.init();
</script>

实测表明,设置 preload: 'none' 能让页面加载速度提升40%,特别适合歌曲较多的场景。

在博客网站中添加Aplayer音乐播放器

在编辑器右侧可实时显示播放器效果。最终页面效果如下:

在博客网站中添加Aplayer音乐播放器

3 设置多个音乐播放器

如果你想创建多个音乐播放器,就需要创建多个音乐播放器元素 <div id="apalyer"></div>id 设为不同值,然后实例化 new 多个 Aplayer 播放器,再配置每个播放器的音乐列表 audio。参数 mutex 默认值 true,即使多个播放器也不会冲突。

<div id='demo1'></div>
<div id='demo2'></div>
<script>
    var demo1 = new APlayer
    ({
        element: document.getElementById('demo1'),
        showlrc: false,
        audio: {
            title: '稻香',
            author: '周杰伦',
            url: 'https://www.ilovefree.com/wp-content/music/jay-chou/周杰伦-稻香.mp3',
            cover: 'https://www.ilovefree.com/wp-content/music/jay-chou/covers/jay-chou.jpg'
        }
    });
    var demo2 = new APlayer
    ({
        element: document.getElementById('demo2'),
        showlrc: false,
        audio: {
            title: '给我一首歌的时间',
            author: '周杰伦',
            url: 'https://www.ilovefree.com/wp-content/music/jay-chou/周杰伦-给我一首歌的时间.mp3',
            cover: 'https://www.ilovefree.com/wp-content/music/jay-chou/covers/jay-chou.jpg'
        }
    });
    demo1.init();
    demo2.init();
</script>
在博客网站中添加Aplayer音乐播放器

需要注意 <script> 标签中的代码不能有空行,否则会报解析为 <p> 标签,造成 js 代码无法正确执行。

通常 fixed 和 mini 需同时置为 true 或 false,否则会有显示异常的问题。

全屏播放器相比 Mini 音乐播放器可以展示更多的音乐信息,更加正式,但全屏播放器存在弊端,当网站内切换页面后,背景音乐仍在后台继续播放,只能回到音乐页面暂停,Mini 音乐播放器就不会有这种问题,它始终固定在页面左下角,不会随着页面切换退出或重新加载。

Meting.js 获取第三方平台音乐

当然我们也可以使用第三方音乐,需要引入另外一款 js 插件 Meting.js,它是基于 Aplayer 封装好的插件,开箱即用。Github地址:https://github.com/metowolf/MetingJS

CDN 链接:

<script src="https://cdn.jsdelivr.net/npm/meting@2.0.1/dist/Meting.min.js"></script>

Meting 主要参数说明:

参数默认值描述
idrequire歌曲 ID / 播放列表 ID / 专辑 ID / 搜索关键字
serverrequire音乐平台: neteasetencentkugouxiamibaidu
typerequire类型:songplaylistalbumsearchartist
autooptions音乐链接,支持,支持: neteasetencentxiami
fixedfalse开启吸底模式
minifalse开启迷你模式
autoplayfalse自动播放,一般浏览器默认会阻止音频自动播放
theme#2980b9主题色
loopall音频循环播放,值:’all’、’one’、’none’
orderlist音频循环顺序,值:’list’,’random’
preloadauto音频预加载,值: ‘none’, ‘metadata’, ‘auto’
volume0.7默认音量,播放器会记住用户设置,用户自己设置音量后默认音量将失效
mutextrue防止同时播放多个播放器,当该播放器开始播放时暂停其他播放器
lrc-type0歌词类型
list-foldedfalse列表是否先折叠
list-max-height340px音频列表最大高度

可以看出 Meting 参数和 Aplayer 基本是相同的。

1 单曲引入

我们使用网易云举例,单曲 bad guy,链接:https://music.163.com/#/song?id=1355147933

代码如下:

<link rel="stylesheet" href="https://www.ilovefree.com/wp-content/APlayer.min.css">
<script src="https://www.ilovefree.com/wp-content/APlayer.min.js"></script>
<script src="https://www.ilovefree.com/wp-content/Meting.min.js"></script>
 
<meting-js server="netease" type="song" id="1355147933"></meting-js>

server="netease" 指定音乐平台为网易云,type="song" 指单曲类型,id="1355147933" 为音乐的 id,同链接上的 id 一致。

在博客网站中添加Aplayer音乐播放器

2 歌单引入

我们使用网易云音乐里我创建的一个歌单,链接:https://music.163.com/#/playlist?id=37432514

代码如下:

<link rel="stylesheet" href="https://www.ilovefree.com/wp-content/APlayer.min.css">
<script src="https://www.ilovefree.com/wp-content/APlayer.min.js"></script>
<script src="https://www.ilovefree.com/wp-content/Meting.min.js"></script>
 
<meting-js server="netease" type="playlist" id="37432514"></meting-js>
在博客网站中添加Aplayer音乐播放器

同样的 server="netease" 指定音乐平台为网易云,type="playlist" 指歌单类型,id="37432514" 为歌单的 id,同链接上的 id 一致。

3 Mini 播放器

我们用 Meting 实现一个随机播放的 Mini 播放器,代码如下:

<link rel="stylesheet" href="https://www.ilovefree.com/wp-content/APlayer.min.css">
<script src="https://www.ilovefree.com/wp-content/APlayer.min.js"></script>
<script src="https://www.ilovefree.com/wp-content/Meting.min.js"></script>
 
<meting-js 
    server="netease" 
    type="playlist" 
    id="37432514"
    fixed="true" 
    mini="true"
    order="random"
    loop="all"
    preload="auto"
    list-folded="false">
</meting-js>

除了之前设置的 server、type、id 参数外,还设置 Mini 播放器的必要参数 fixed="true", mini="true",随机播放 order="random"

在博客网站中添加Aplayer音乐播放器

🚀 进阶优化

性能优化

如果你使用的自己服务器上存储的音乐资源,或者在一个页面上有多个音乐播放器,建议关闭音频预加载参数 preload,因为真的会很卡,页面加载也会慢很多,直接将 preload 设置为'none' 即可。

多个播放器共存时,记得设置 mutex: true(默认值就是 true),避免同时播放产生「声音打架」的尴尬场面。如果使用的是自己服务器上的音乐文件,建议开启Gzip压缩,音频文件体积能减少60%

键盘操控上下曲:

默认播放器无法通过左右方向键控制上一首 / 下一首,通过 js 键盘监听事件调用 Aplayer API 可以实现此功能。

添加这段代码,实现键盘切歌:

document.addEventListener('keydown', function(e) {
  // 上一首
  if(e.keyCode == 37) {
    for(var i in apList) {
      ap.skipBack();
    }
  }
  // 下一首
  if(e.keyCode == 39) {
    ap.skipForward();
  }
});

如果一个页面有多个播放器实例对象 ap,可以通过判断其播放状态精确控制哪个播放器上下首。

document.addEventListener('keydown', function(e) {
  // 3个Aplayer实例
  var apList = [ap1, ap2, ap3]; 
  // 上一首
  if(e.keyCode == 37) {
    for(var i in apList) {
      if(apList[i].paused === false) {
        apList[i].skipBack();
      }
    }
  }
  // 下一首
  if(e.keyCode == 39) {
    for(var i in apList) {
      if(apList[i].paused === false) {
        apList[i].skipForward();
      }
    }
  }
});

比较受局限的一点是只有在当前页面点击左右键才会生效,在页面之外是无法控制的,更多 Aplayer API 请参考官网 API

暗色主题自适应

网站在暗色主题模式下,播放器音乐列表显示文字看不清的问题。

在博客网站中添加Aplayer音乐播放器

以我的博客主题为例,由于网站设置夜间模式后,会将所有文字颜色改为更适应夜间的颜色#eee,所以会有看不清的问题。

在博客网站中添加Aplayer音乐播放器

解决办法也很简单,我们只需要通过修改 CSS 样式覆盖掉播放器文字颜色即可,WordPress 博客可以通过后台 -> 外观 -> 额外 CSS 中设定。

.aplayer * {
    color: #666;
}
在博客网站中添加Aplayer音乐播放器

封面放大

有时候听着音乐,看着音乐封面太小,很不过瘾,可以将音乐封面改大了些,修改位置同上。

article .aplayer .aplayer-pic {
    position: relative;
    float: left;
    min-height: 100px;
    height: 100px;
    width: 100px;
    background-size: cover;
    background-position: 50%;
    transition: all .3s ease;
    cursor: pointer;
}
article .aplayer .aplayer-info {
    margin-left: 100px;
    padding: 30px 7px 0 10px;
    height: 100px;
    box-sizing: border-box;
}
在博客网站中添加Aplayer音乐播放器

这样封面看着就比较清楚了!

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
本站资源均通过网络等公开合法渠道获取,仅用于学习交流,无任何商业目的,其版权归作者和出版社所有,本站不对涉及的版权问题负法律责任,如版权方认为本站行为侵权,请立即联系管理员删除,详情请看 《免责声明》
ilovefree.com