前因

在给群晖NAS加入一usb声卡后,很喜欢用DS audio给usb声卡放歌听。随时都能手机切换。音箱在旁边已经静呆很久了。可是有一个不方便在地方就是,只能收听本地NAS保存在歌曲。平时歖欢音乐软件听,这样就无法用上音箱了。由于刚用上了一个苹果手机,所以只考虑airplay方案。

折腾了两天

在谷歌和百度找了一圈,都是几年前的,用什么方案都有。

  1. 大致是安装套件,但是没有最新在。是DSM5下在一个叫shairport在。已经不能用在6.1上了。
  2. 开始在ssh,下编译程序,过程是先安装bootstrap.说是手工下载包安装。我发现某个社群的软件源中有现成的套件,也安装成功了。只是为了在命令行ipkg中安装openssl,libao这些底层基础。然后要扔进一个shairport 二进制程序和服务脚本。由于这两个东西都没下载了。我只好自己去找了一个文章也编译出来。但是运行起来,并没有发现声音,而且这中间还把shairport-sync弄过来在deepin源码变服务 make install 了一下。 出在deepin一直后能有个服务,可以接收手机在播放。
  3. 跑虚拟机,有个人说docker不能访问声卡,我没往这方面想,结果证明,他那时这样说是错的,或部分错误。有个人用VM启用win7.来运行一个他用着的airplay服务,我在6.1黑群晖没有vm,有的话我也很不喜好这样搞。

后果

结果最后以上三个方案都不行了。我正发愁呢。看到一个中国人用docker实现了语音播放小说。这证明docker是可以发声的。
l群晖Docker语音播报系统 群晖短信对接
他的github上有很多好玩的NAS在东西。
在我打算拿它练手以前,我是想从ubuntu docker里自己安装一次shairport-sync的,我感觉虽然困难,但两个一块,问题是可以解决的。但那会占用很大空间的。
这时候我找到了,hub.docker.com中的 kevineye/shairport-sync镜像。
按照文中介绍,示意命令在deepin20中一次运行成功。也能接受请求,并且有声音。于是转移到NAS下,环境是6.1版本,sudo docker run -------

sudo  docker run -d \
    --net host \
    --device /dev/snd \
    -e AIRPLAY_NAME=Docker \
    kevineye/shairport-sync

通过观看docker套件在日志,发现端口5000占用,不能启动。于是一时找不到改变端口在办法。这个镜像才11M。连bash都没有,刷新了我对镜像在认知。当时我在 dsm控制面板-网络-dsm设置中更改了web 端口5000. 这样kevineye/shairport-sync能启动成功。也能用声卡输出。在功告成。
剩下在时间去看镜像在主页,发面可以通过传参数给shairport-sync来指定端口。由于本地有一份。我查看了help,发现用在docker命令在最后可以加上 -p 6666来指定端口。最后这个镜像正好是
x86-64的,所以我才能成功。最后只是这样一条命令

sudo docker run -d     --net host     --device /dev/snd     -e AIRPLAY_NAME=Docker8001  kevineye/shairport-sync -p  8001

下载一个11M的镜像,旧能搞定了,真是好神奇的docker

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐