^-^
Life love
hexo博客的音视频
最近更新:2025-02-01   |   字数总计:3.8k   |   阅读估时:16分钟   |   阅读量:
  1. tag aplayer
    1. APlayerJS
      1. 下载
    2. 基本使用
      1. 标签参数
      2. 歌词显示:
  2. MetingJS
    1. 配置
  3. 使用 MetingJS 播放音乐:
    1. 参数列表:
  4. markdown 文档应用示例:
  5. 平台使用:
    1. 网易云音乐 (NetEase)
    2. QQ 音乐 (QQ Music)
    3. 酷狗音乐 (KuGou)
    4. 酷我音乐 (KuWo)
    5. 喜马拉雅 (Ximalaya)
    6. Bilibili (哔哩哔哩)
  • 参考方法三
    1. 一、使用官方网站上获取的音频外链播放器
    2. 二、使用开源插件 hexo-tag-aplayer
    3. 三、使用播放器 APlayer 和插件 APlayer-Typecho
  • tag dplayer
    1. 介绍
    2. 安装
    3. 使用
    4. 使用弹幕
    5. 使用字幕
  • 安装之后在清华云盘生成直接下载链接即可!!!

    tag aplayer

    本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

    title: “在 Hexo 博客中使用 APlayer 和 Meting 音乐播放器”
    date: “2021-10-16”
    categories:

    • “技术文档”

    tags:

    • “Hexo”
    • “APlayer”
    • “Meting”
    • “音乐播放器”

    APlayerJS

    依赖:

    在 hexo 中使用 aplayer 插件:

    下载
    1
    2
    npm install --save hexo-tag-aplayer

    基本使用

    1
    2
    {% aplayer title author url [picture_url, narrow, autoplay, width:xxx, lrc:xxx] %}

    示例我写的:

    1
    2
    {% aplayer "Shape of You" "Ed Sheeran""http://music.163.com/song/media/outer/url?id=447925558.mp3" %}

    标签参数
    • aplayer: 固定参数,必填
    • title: 曲目标题
    • author: 曲目作者
    • url: 音乐文件 URL 地址
    • picture_url: (可选) 音乐对应的图片地址
    • narrow: (可选)播放器袖珍风格
    • autoplay: (可选) 自动播放,移动端浏览器不支持此功能
    • width: xxx: (可选) 播放器宽度 (默认: 100%)
    • lrc: xxx: (可选)歌词文件 URL 地址

    当开启 Hexo 的文章资源文件夹功能时,可以将图片、音乐文件、歌词文件放入与文章对应的资源文件夹中,然后直接引用:

    1
    2
    {% aplayer "Caffeine" "Jeff Williams" "caffeine.mp3" "picture.jpg" "lrc:caffeine.txt" %}

    资源文件引用 hexo 教程资源文件夹

    歌词显示:

    除了通过 lrc 参数指定外,可以直接在博客中使用 aplayerlrc 标签插入歌词:

    1
    2
    3
    4
    5
    {% aplayerlrc "title" "author" "url" "autoplay" %}
    [00:00.00] 歌词内容
    ...
    {% endaplayerlrc %}

    支持播放列表:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    {% aplayerlist %}
    {
    "narrow": false, // (可选)播放器袖珍风格
    "autoplay": true, // (可选) 自动播放,移动端浏览器暂时不支持此功能
    "mode": "random", // (可选)曲目循环类型,有 'random'(随机播放), 'single' (单曲播放), 'circulation' (循环播放), 'order' (列表播放), 默认:'circulation'
    "showlrc": 3, // (可选)歌词显示配置项,可选项有:1,2,3
    "mutex": true, // (可选)该选项开启时,如果同页面有其他 aplayer 播放,该播放器会暂停
    "theme": "#e6d0b2", // (可选)播放器风格色彩设置,默认:#b7daff
    "preload": "metadata", // (可选)音乐文件预载入模式,可选项: 'none' 'metadata' 'auto', 默认: 'auto'
    "listmaxheight": "513px", // (可选) 该播放列表的最大长度
    "music": [
    {
    "title": "CoCo",
    "author": "Jeff Williams",
    "url": "caffeine.mp3",
    "pic": "caffeine.jpeg",
    "lrc": "caffeine.txt"
    },
    {
    "title": "アイロニ",
    "author": "鹿乃",
    "url": "irony.mp3",
    "pic": "irony.jpg"
    }
    ]
    }
    {% endaplayerlist %}


    MetingJS

    MetingJS 是 APlayer 衍生播放器,支持多个音乐平台的播放。

    配置

    在 Hexo 配置文件_config.yml中设置:

    1
    2
    3
    4
    5
    6
    aplayer:
    script: https://cdn.jsdelivr.net/npm/aplayer@1.10.1/dist/APlayer.min.js
    style: https://cdn.jsdelivr.net/npm/aplayer@1.10.1/dist/APlayer.min.css
    meting: true
    asset_inject: false

    使用 MetingJS 播放音乐:

    1
    2
    3
    4
    5
    6
    <!-- 简单示例 -->
    {% meting "60198" "netease" "playlist" %}

    <!-- 进阶示例 -->
    {% meting "60198" "netease" "playlist" "autoplay" "mutex:false" "listmaxheight:340px" "preload:none" "theme:#ad7a86"%}

    参数列表:

    参考 Meting 的官方文档了解所有支持的参数。
    Meting 允许你通过不同的参数来自定义播放器的行为和外观。

    参数默认值描述
    id必须值歌曲 id / 播放列表 id / 相册 id / 搜索关键字
    server必须值音乐平台: netease, tencent, kugou, xiami, baidu
    type必须值类型: song, playlist, album, search, artist
    fixedfalse开启固定模式
    minifalse开启迷你模式
    loopall列表循环模式: all, one, none
    orderlist列表播放模式: list, random
    volume0.7播放器音量
    lrctype0歌词格式类型
    listfoldedfalse指定音乐播放列表是否折叠
    storagenamemetingjsLocalStorage 中存储播放器设定的键名
    autoplaytrue自动播放(移动端浏览器不支持)
    mutextrue同页面有其他 aplayer 播放时,该播放器暂停
    listmaxheight340px播放列表的最大长度
    preloadauto音乐文件预载入模式: none, metadata, auto
    theme#ad7a86播放器风格色彩设置

    markdown 文档应用示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!-- require APlayer -->
    <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>
    <!-- require MetingJS -->
    <script src="https://cdn.jsdelivr.net/npm/meting@2/dist/Meting.min.js"></script>

    <meting-js
    server="netease"
    type="playlist"
    id="3779629">
    </meting-js>


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
    <script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/meting@2/dist/Meting.min.js"></script>

    <style>
    #aplayer-container {
    position: fixed;
    top: 20px;
    right: 20px;
    z-index: 999;
    }

    #aplayer-button {
    width: 50px;
    height: 50px;
    background-image: linear-gradient(135deg, #6e8efb, #a777e3);
    border-radius: 50%;
    text-align: center;
    line-height: 50px;
    cursor: pointer;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
    transition: all 0.3s ease;
    display: flex;
    justify-content: center;
    align-items: center;
    }

    #aplayer-button:hover {
    background-image: linear-gradient(135deg, #a777e3, #6e8efb);
    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3);
    }

    #aplayer-button i {
    color: white;
    font-size: 20px; /* 调整图标大小 */
    }

    #aplayer-panel {
    display: none;
    position: absolute;
    top: 60px;
    right: 0;
    width: 300px;
    overflow-y: auto; /* 添加滚动条 */
    max-height: 400px; /* 限制最大高度,并显示滚动条 */
    background-color: #fff; /* 面板背景颜色 */
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* 面板阴影 */
    border-radius: 10px; /* 面板边角圆滑 */
    }

    /* 自定义滚动条样式 */
    #aplayer-panel::-webkit-scrollbar {
    width: 5px;
    }

    #aplayer-panel::-webkit-scrollbar-thumb {
    background: #a777e3;
    border-radius: 10px;
    }

    #aplayer-panel::-webkit-scrollbar-track {
    background: #f0f0f0;
    }
    </style>

    <div id="aplayer-container">
    <div id="aplayer-button">
    <i class="fas fa-music"></i> <!-- 使用 Font Awesome 图标 -->
    </div>
    <div id="aplayer-panel">
    <meting-js server="netease" type="playlist" id="3778678"></meting-js>
    </div>
    </div>

    <script>
    document.addEventListener("DOMContentLoaded", function(event) {
    const button = document.getElementById('aplayer-button');
    const panel = document.getElementById('aplayer-panel');
    button.addEventListener('click', function() {
    if (panel.style.display === 'none') {
    panel.style.display = 'block';
    } else {
    panel.style.display = 'none';
    }
    });
    });
    </script>




    平台使用:

    Meting.js 的使用非常简单,只需指定对应平台的相关信息即可。以下是针对你提到的平台的基本操作指南:

    网易云音乐 (NetEase)
    1
    2
    3
    4
    5
    6
    7
    8
    <!-- 网易云音乐歌单 -->
    <meting-js
    server="netease"
    type="playlist"
    id="歌单ID"
    fixed="true">
    </meting-js>

    QQ 音乐 (QQ Music)
    1
    2
    3
    4
    5
    6
    7
    8
    <!-- QQ音乐歌单 -->
    <meting-js
    server="tencent"
    type="playlist"
    id="歌单ID"
    fixed="true">
    </meting-js>

    酷狗音乐 (KuGou)
    1
    2
    3
    4
    5
    6
    7
    8
    <!-- 酷狗音乐歌单 -->
    <meting-js
    server="kugou"
    type="playlist"
    id="歌单ID"
    fixed="true">
    </meting-js>

    酷我音乐 (KuWo)
    1
    2
    3
    4
    5
    6
    7
    8
    <!-- 酷我音乐歌单 -->
    <meting-js
    server="kuwo"
    type="playlist"
    id="歌单ID"
    fixed="true">
    </meting-js>

    喜马拉雅 (Ximalaya)
    1
    2
    3
    4
    5
    6
    7
    8
    <!-- 喜马拉雅FM电台 -->
    <meting-js
    server="ximalaya"
    type="program"
    id="电台ID"
    fixed="true">
    </meting-js>

    Bilibili (哔哩哔哩)
    1
    2
    3
    4
    5
    6
    7
    8
    <!-- Bilibili音乐视频 -->
    <meting-js
    server="bilibili"
    type="song"
    id="视频ID"
    fixed="true">
    </meting-js>

    对于上述代码中的 id,你需要将 歌单ID电台ID视频ID 替换为实际的 id 编号,这些可以在各自平台上找到对应的资源 ID。
    fixed="true" 属性是表示播放器会固定在页面底部,你可以根据实际需要进行调整。
    请注意,servertypeid 是必填属性。server 表示音乐平台,type 表示加载的资源类型(歌曲、专辑、歌单等),id 则是资源在其服务平台上的唯一标识符。
    为了确保版权问题,使用这些代码时要保证拥有相应的版权或授权。以上是基本的操作指南,具体情况可能会根据 Meting.js 的版本更新而有所变动,为保证准确性,请参考最新的官方文档或资源库信息。

    参考方法三

    本文由 简悦 SimpRead 转码, 原文地址 andergh.github.io

    热爱可抵岁月漫长

    在博客中插入音频,处于音频播放顺畅和音乐版权考虑,我们一般选择各个平台的在线音频,使用播放器进行在线播放,本地加载的话,github服务器缓存可能较慢

    一、使用官方网站上获取的音频外链播放器

    音乐网站一般会提供自家的音频外链播放器,便于其他平台集成,例如网易云音乐,在官网上搜索需要的音乐

    image_1.png

    点击音乐头像下面的生成外链播放器

    image_2.png

    将拿到的代码直接放入博文中即可,如下

    1
    2
    <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=28815250&auto=0&height=66">
    </iframe>

    这种方式简单快捷,但是iframeiOS设备上效果不好,而且平台也会限制版权,有些版权存在争议的音频是不提供外链播放的,如果遇到的话,建议把对应的音频下载后上传到个人歌单,重新生成外链。

    二、使用开源插件 hexo-tag-aplayer

    详细使用请参考插件文档,地址 https://github.com/MoePlayer/hexo-tag-aplayer/blob/master/docs/README-zh_cn.md

    1
    npm install

    三、使用播放器 APlayer 和插件 APlayer-Typecho

    方法一受限于音乐平台版权限制,方法二必须要直接调用音乐的播放 url,而一般从音乐平台的页面上我们无法获取音频地址,所以方法三我们借助插件 APlayer-Typecho 来解析各大音乐平台的音频的地址

    1. 进入theme/主题/source目录下,新建文件夹dist

    2. 访问开源框架 APlayer,地址 https://github.com/MoePlayer/APlayer,下载源码将APlayer-master/dist目录下APlayer.min.cssAPlayer.min.js文件拷贝到第一步新建的dist目录下

    3. 访问开源框架 APlayer-Typecho,地址 https://github.com/MoePlayer/APlayer-Typecho,下载源码,将APlayer-Typecho-master/assets目录下Meting.min.js文件拷贝到第一步的目录下

    此时文件准备已完成,在博文中相应位置进行调用

    1
    2
    3
    4
    5
    6
    <link rel="stylesheet" href="/dist/APlayer.min.css">
    <script src="/dist/APlayer.min.js"></script>

    <div data-id="496298744" data-server="netease" data-type="song"></div>

    <script src="/dist/Meting.min.js"></script>

    其中div样式中的参数为需要展示的音频的参数,说明如下:

    1. class:播放器样式,指定固定值aplayer

    2. data-id:各平台对应的歌曲id

    3. data-server:平台标识

    • netease:网易云
    • tencent:QQ
    • xiami:虾米
    • kugou:酷狗
    • baidu:百度
    1. data-type:音乐类型
    • song:单曲
    • album:专辑
    • playlist:歌单
    • search:搜索

    更多参数说明请参考 APlayerAPlayer-Typecho 文档

    当然,如果你不想每次重新引入js,你也可以找到主题中博文开始和结束的地方,修改博客源文件,将方法的引入放在博客框架中完成。

    tag dplayer

    本文由 简悦 SimpRead 转码, 原文地址 easyhexo.com

    轻松入门 Hexo

    # 介绍

    hexo-tag-dplayer (opens new window)APlayer (opens new window) 播放器的 Hexo 标签插件,可以十分方便地在文章内插入视频播放器。

    # 安装

    安装 hexo-tag-dplayer 插件十分简单,只需要在博客目录执行

    配置项需要一些 Yaml 语法的基础知识,可以参见 YAML 语法简介

    修改 Hexo 的配置文件 _config.yml (似乎不用)

    # 使用

    使用 hexo-tag-dplayer 非常简单,只需要在 MarkDown 文件中插入正确的标记就可以了。

    如果还需要其他配置,尽管在上面写就好,详情可以看 [这里] (https://github.com/MoePlayer/hexo-tag-dplayer),下面有一个简单的示例可以看一下:

    附 Dplayer 一些简单的参数列表,注意, Dplayer 的参数仅作为参考,具体请以 hexo-tag-dplayer (opens new window) 为准

    名称默认值描述
    containerdocument.querySelector('.dplayer')播放器容器元素
    livefalse开启直播模式,详情(opens new window)
    autoplayfalse视频自动播放
    theme'#b7daff'主题色
    loopfalse视频循环播放
    langnavigator.language.toLowerCase()可选值: 'en', 'zh-cn', 'zh-tw'
    screenshotfalse开启截图,如果开启,视频和视频封面需要开启跨域
    hotkeytrue开启热键
    preload'auto'预加载,可选值: 'none', 'metadata', 'auto'
    volume0.7默认音量,请注意播放器会记忆用户设置,用户手动设置音量后默认音量即失效
    logo-在左上角展示一个 logo,你可以通过 CSS 调整它的大小和位置
    apiBackend-自定义获取和发送弹幕行为,详情(opens new window)
    video-视频信息
    video.quality-详情(opens new window)
    video.defaultQuality-详情(opens new window)
    video.url-视频链接
    video.pic-视频封面
    video.thumbnails-视频缩略图,可以使用 DPlayer-thumbnails(opens new window) 生成
    video.type'auto'可选值: 'auto', 'hls', 'flv', 'dash', 'webtorrent', 'normal' 或其他自定义类型,详情(opens new window)
    video.customType-自定义类型,详情(opens new window)
    subtitle-外挂字幕
    subtitle.urlrequired字幕链接
    subtitle.type'webvtt'字幕类型,可选值: 'webvtt', 'ass',目前只支持 webvtt
    subtitle.fontSize'20px'字幕字号
    subtitle.bottom'40px'字幕距离播放器底部的距离,取值形如: '10px' '10%'
    subtitle.color'#fff'字幕颜色
    danmaku-显示弹幕
    danmaku.idrequired弹幕池 id,必须唯一
    danmaku.apirequired详情(opens new window)
    danmaku.token-弹幕后端验证 token
    danmaku.maximum-弹幕最大数量
    danmaku.addition-额外外挂弹幕,详情(opens new window)
    danmaku.user'DIYgod'弹幕用户名
    danmaku.bottom-弹幕距离播放器底部的距离,防止遮挡字幕,取值形如: '10px' '10%'
    danmaku.unlimitedfalse海量弹幕模式,即使重叠也展示全部弹幕,请注意播放器会记忆用户设置,用户手动设置后即失效
    contextmenu[]自定义右键菜单
    highlight[]自定义进度条提示点
    mutextrue互斥,阻止多个播放器同时播放,当前播放器播放时暂停其他播放器

    # 使用弹幕

    上面的示例中已经写了怎么使用弹幕了,使用弹幕首先需要有一个 ID ,建议使用视频的哈希值作为 ID,这样可以尽可能保证 ID 唯一,防止重复,接下来要配置弹幕接口,官方免费的弹幕接口能用,但是不稳定,如果有特殊需求,推荐个人自己搭建弹幕服务器。

    解析 BiliBiLi 弹幕,这个上面的示例也已经有了,同样,免费的服务不一定稳定,有特殊需求的请自己搭建弹幕服务器。

    增加外部弹幕列表,同解析 BiliBiLi 弹幕一样,只要将外部弹幕的地址写进 addition 就可以了。

    # 使用字幕

    增加参数 "subtitle=字幕文件地址" 就可以了,如需修改字幕颜色或者字体大小,仿照其他参数写就可以了。