支持二次开发的音乐流媒体服务Euterpe

净姐还是很给力的,加了无数个团购群后,成功的团到了一次菜。礼拜二下的单,礼拜四就收到了,再撑过一个礼拜应该没问题。

小区大有大的好处,容易成团,但是缺点就是运力不足,物业就那么几个人,又要分拣,消杀,还要一户一户的送,真是难为他们了。

现在居委会牵头,在推动小区和盒马等几家企业进行集采合作,希望一切顺利吧,这样起码居家隔离也少了后顾之忧,同时也大大减少了 “物传人” 风险。

礼拜三中午做了一次核酸,礼拜四做了一次 “全家捅” ,今天一大早又做了 “全家捅”,看通知明天一早还有一次,也不知道什么时候才算完。


什么是 Euterpe ?

Euterpe 是自托管的音乐流媒体服务。以前称为“HTTPMSHTTP 媒体服务器)”。带有 RESTful APIWeb 界面。可以将其视为您自己的 Spotify

官方体验地址:https://listen-to-euterpe.eu/demo

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 euterpe ,选择第二个 ironsmile/euterpe,版本选择 latest

docker 文件夹中,创建一个新文件夹,并将其命名为 euterpe

文件夹 装载路径 说明
docker/euterpe /root/Music 存放音乐

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
9996 9996

运行

在浏览器中输入 http://群晖IP:3030 就能看到主界面

拷入音乐文件后,点下面的 Load All Music,完成后会显示专辑和列表

无损的 wav 也能播放,不过可能是因为文件比较大而且没有转码,远程播放偶尔会有卡顿

中文没有乱码,可以显示正常

查了下官方的文档,支持最常见的音频格式,例如 mp3ogaoggwavflacopuswebmm4a 音频格式

播放器用的 jPlayer,这是一个轻量级的 HTML5 播放器,几乎支持所有的浏览器和操作系统

客户端

除了在 Web 上播放外。服务器还有一个 RESTful API,因此可以很容易地从其他客户端使用,从界面看移动端还不错

iOS 需要自己从源代码编译😳

  • euterpe-mobile(https://github.com/ironsmile/euterpe-mobile)是一个使用 React Native 编写的 iOS/Android 移动客户端。
  • euterpe-rhythmbox(https://github.com/ironsmile/euterpe-rhythmbox)Gnome's Rhythmbox 客户端插件。
  • euterpe-gtk(https://github.com/ironsmile/euterpe-gtk)是一个用于移动或桌面的 GTK 客户端。

老苏在 https://github.com/ironsmile/euterpe-mobile/releases 下载了最新的 0.8.1

如果使用移动端,需添加服务器地址,用 Scan a Barcode

网页端点开 Add Device 可以扫描二维码登录

首界面

开始播放

高级设置

官方的设置文件有详细的说明:https://listen-to-euterpe.eu/docs/configuration/

不过在 docker 上操作有点繁琐,你可以从容器中将设置文件 config.json 拷贝出来再修改

老苏在 euterpe 中新建了子文件夹 config 用来存放 config.json 文件;ironsmile-euterpe1 是容器的名称

1
2
# 拷出配置文件
docker cp ironsmile-euterpe1:/root/.euterpe/config.json /volume2/docker/euterpe/config/

也可以直接新建一个 config.json 文件,老苏按自己的需要加了个登录账号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"listen": "0.0.0.0:9996",
"ssl_certificate": {},
"basic_authenticate": true,
"authentication": {
"user": "laosu",
"password": "123456",
"secret": "7814ad5c4a4fce1a46b3e7b1cbc86941db6ea7d4c014ec9e20ca628249e2d4a97413d18f46c1b0106a3dc934ad5acac7856e3686b36e647bc18bd218f38be73c"
},
"libraries": [
"/root/Music"
],
"library_scan": {
"initial_wait_duration": "1s",
"files_per_operation": 1500,
"sleep_after_operation": "15ms"
}
}

让配置生效有两个办法:

第一种是将配置文件再拷回容器内,这种方法有点麻烦,需要用到 SSH 客户端,每次修改了还要重新拷贝和重启容器

1
2
# 拷入配置文件
docker cp /volume2/docker/euterpe/config/config.json ironsmile-euterpe1:/root/.euterpe/

第二种是直接挂载配置文件,停止容器增加挂载文件

文件夹 装载路径 说明
docker/euterpe /root/Music 存放音乐
docker/euterpe/config/config.json /root/.euterpe/config.json 设置文件

再启动之后,打开网页会看到登录界面

API

官方提供了详细的的文档:https://listen-to-euterpe.eu/docs/api/,如果你打算自己开发客户端,可以研究一下。

最后来一张官方的动图

参考文档

ironsmile/euterpe: Self-hosted music streaming server 🎶 with RESTful API and Web interface. Think of it as your very own Spotify! ☁️🎧
地址:https://github.com/ironsmile/euterpe

ironsmile/euterpe-mobile: Android and iOS apps for the Euterpe media server
地址:https://github.com/ironsmile/euterpe-mobile

Documentation · Euterpe Music
地址:https://listen-to-euterpe.eu/docs