『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 10083|回复: 5

[进阶教程] 找不到合适的?自己动手,打造最新版 MPD docker镜像及容器

[复制链接]

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2021-6-22 21:36:53 | 显示全部楼层 |阅读模式
学习了SchumyHao的大作 黑群晖接有线音响做TTS,把前几天买的一个自带DAC的USB小音箱在群晖上成功用起来了。非常爽。

可是原帖里使用的镜像是一个比较旧的版本且原作者好久没有上传了,本着有新版不用就不舒服的原则,开始琢磨自己构建镜像。

先交代一下:我用的是群晖,Audio Station已经可以完美使用这个小音箱。

看了下原作者在github上的repo,开始动手。

1. Dockerfile 文件,修改如下:
FROM alpine:latest
RUN set -xe \
    && apk add --no-cache mpd mpc ncmpc \
    && setcap -r /usr/bin/mpd
VOLUME /var/lib/mpd
EXPOSE 6600
CMD ["mpd", "--stdout", "--no-daemon"]
然后以root权限执行:
docker build -t mpd:210621 .
创建镜像文件。

2. 新建一个给mpd容器用的目录,我设置的是 /volume1/docker/mpd,在其中再新建一个子目录 run,以及以下两个文件:
docker-compose.yaml:
version: "3.8"
services:
  mpd:
    container_name: mpd
    image: mpd:210621
    network_mode: host
    volumes:
      - ./mpd.conf:/etc/mpd.conf
      - ./run:/var/lib/mpd
    devices:
      - /dev/snd
    restart: unless-stopped
把run目录映射到docker里,比原来单独映射每个文件更科学,可以避免很多错误提示。

mpd.conf:
music_directory    "/var/lib/mpd/music"
playlist_directory "/var/lib/mpd/playlists"
db_file            "/var/lib/mpd/database"
log_file           "/var/lib/mpd/mpd.log"
pid_file           "/var/lib/mpd/mpd.pid"
state_file         "/var/lib/mpd/state"
sticker_file       "/var/lib/mpd/sticker.sql"

audio_output {
    type                     "alsa"
        name                     "MPDalsa"
    device                   "hw:0,0"
    mixer_type             "software"
}
然后进入到这个目录,继续以root权限执行:
docker-compose up -d
容器就启动就绪了。最新版的 mpd,虽然用起来没啥区别,但感觉就是更爽。。。

剩下的和原帖没啥区别。

~~~~~~~~~~
一点小经验:
因mpd的工作机制,music和playlist目录有更新之后,必须用mpd客户端更新一次数据库,否则新增的文件是不认的。
在mpd容器新增终端,命令 /bin/ash,然后执行:`mpc update` 即可。

~~~~~~~~~~
仍有一个很大的遗憾:
群晖里是有PulseAudio的,但尝试让mpd使用没有成功。只好让 mpd 继续直接使用 alsa 设备。这么做的一个缺陷就是播放时独占硬件,无法与 Audio Station 和谐共处。
哪位大神知道怎么弄啊?
回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2021-6-22 23:19:48 | 显示全部楼层
这么老的神贴都被你挖出来了
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-6-22 23:26:49 来自手机 | 显示全部楼层
囧 发表于 2021-6-22 23:19
这么老的神贴都被你挖出来了

嗯,堪称经典啊!
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2021-6-23 12:07:13 | 显示全部楼层
老妖都好几年不见人了
Nero
回复

使用道具 举报

35

主题

401

帖子

2565

积分

金牌会员

Rank: 6Rank: 6

积分
2565
金钱
2164
HASS币
10
发表于 2022-3-29 22:30:51 | 显示全部楼层
Audio Station上可以利用Airplay2机制,同时用多个dlna音箱播放立体声。
不知道MPD能否实现这一点
回复

使用道具 举报

2

主题

17

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
金钱
361
HASS币
0
发表于 2024-7-12 09:40:11 | 显示全部楼层
版主后来有找到让mpd使用pulseaudio的方法吗?我看有人说的可以开启pulseaudio的load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1,配置mpd.conf
audio_output {
    type        "pulse"
    name        "arbitrary_name_which_you_like"
    server      "localhost"
}
但我照着抄了配置,还是提示没有可用的 output
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 12:42 , Processed in 0.536361 second(s), 28 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表