Shairport Sync:
一款开源 AirPlay 音频接收器,支持 AirPlay 1/2(部分功能),让你的 NAS 或树莓派秒变家庭音响中心,打造多房间同步播放的体验。
别让 NAS 只当网盘!Docker 部署 AirPlay,秒变家庭音响中心
项目特点:
-
协议支持:既可以作为经典的 AirPlay 1 播放器,也能构建为 AirPlay 2 播放器(有一些限制)。
-
音质与格式:支持立体声和多声道(5.1、7.1),甚至可以播放无损 24-bit 立体声,采样率高达 48kHz。
-
元数据处理:可以获取并传递艺术家信息、专辑封面等元数据给其他应用。
-
接口扩展:支持 MQTT、MPRIS-like 接口和 D-Bus,用于与其他应用交互和远程控制。
-
局限性:仅支持音频,不支持 AirPlay 的视频或照片流。
安装
Docker Compose
services: airplay: image: mikebrady/shairport-sync:latest container_name: airplay network_mode: host volumes: – ./shairport-sync.conf:/etc/shairport-sync.conf devices: – /dev/snd group_add: – audio cap_add: – SYS_NICE restart: always
参数说明(更多参数建议去看文档)
shairport-sync.conf(挂载文件):用于配置参数
/dev/snd(设备):挂载声卡设备
group_add(权限组,可选):添加 audio 权限
cap_add(进程调度,可选):提升进程的调度优先级
配置
启动前先创建 shairport-sync.conf 配置文件,下面是一个基础模板,接下来将一个个说具体怎么配置
general = { name = “FNOS-Speaker”; output_backend = “alsa”; }; alsa = { output_device = “plughw:1,0”; output_format = “S16”; };
TIP:建议先安装 ALSA 工具包,方便查看声卡信息(如果懒得装,也可以使用通用兼容的参数)
# 安装 ALSA 工具包 apt update && apt install -y alsa-utils # 查看所有音频设备 aplay -l # 查看可用的 ALSA 控制接口 amixer -c 1 controls # 查看声卡支持的采样格式 aplay -D plughw:1,0 –dump-hw-params /dev/zero 2>&1 | grep FORMAT
全局配置,其中 output_backend 是选择音频,操作声卡硬件默认选择 alsa 就行,兼容性比较好
general = { name = “DXP-Speaker”; # AirPlay设备名称 output_backend = “alsa”; # 音频后端: alsa/pw/pa/jack };
音频后端设置(下面会详细说,怎么填参数)
alsa = { output_device = “plughw:1,0”; # 指定声卡输出 output_format = “S16”; # 音频位深格式 };
使用 SSH 工具连接设备,输入下面命令:
# 切换 root 权限 sudo -i # 查看声卡级别(看有几张卡、编号和名字) cat /proc/asound/cards # 查看设备级别(看每张卡有几个 PCM 设备) cat /proc/asound/pcm
这台设备有 3 张声卡,分别是:CPU 核显 HDMI/DP 通道、主板集成声卡、主板蜂鸣器。其中卡 1 就是需要的,如果不清楚,可以复制问 AI 就行
别让 NAS 只当网盘!Docker 部署 AirPlay,秒变家庭音响中心
下面就是具体看每个卡下的 PCM 设备,01-00 就是需要用到的主板音频(耳机 / 音箱 / 麦克风),所以 output_device 填写是“plughw:1,0”
cat /proc/asound/cards 跟上面的对照关系 0 [HDMI] → 00-03 / 00-07 / 00-08 (三个 HDMI 口) 1 [PCH] → 01-00 / 01-02 (模拟口 + 备用) 2 [pcsp] → 02-00 (蜂鸣器)
别让 NAS 只当网盘!Docker 部署 AirPlay,秒变家庭音响中心
至于 output_format 一般都是通用的填 S16 就行,也可以输入命令查看
aplay -D plughw:1,0 –dump-hw-params /dev/zero 2>&1 | grep FORMAT
别让 NAS 只当网盘!Docker 部署 AirPlay,秒变家庭音响中心
使用
确认容器日志无报错后,在 iPhone/Mac 的控制中心点击音频投送,就能在列表里看到设备。
启动容器后查看日志,应该是没有警告或者报错的
别让 NAS 只当网盘!Docker 部署 AirPlay,秒变家庭音响中心
下拉控制中心,点击投送就能看到接收器了
别让 NAS 只当网盘!Docker 部署 AirPlay,秒变家庭音响中心
测试过 fnOS(笔记本)和 UGOS Pro(绿联全闪)两个系统都没问题,有扬声器就是扬声器播放,插上 3.5mm 音频也能正常出声
别让 NAS 只当网盘!Docker 部署 AirPlay,秒变家庭音响中心
如果配置没有问题,容器日志也没报错,同时也可以正常找到设备,但就是没声音,大概率是声卡默认处于静音状态(比较常见情况)。可以安装 ALSA 工具包,通过 amixer 命令解除静音、调高音量,直接复制下面命令运行即可。
# 安装 alsa-utils apt update && apt install -y alsa-utils # 开音量+去静音 amixer -c 0 sset Master 100% unmute
别让 NAS 只当网盘!Docker 部署 AirPlay,秒变家庭音响中心
总结
Shairport Sync 这款应用可以配置的参数还有很多,本教程只是将最基础的功能搭建起来。NTP 同步精度、解码后处理、多房间延迟对齐,这些高阶配置官方文档里都有。如果你的手里有闲置音箱/功放、又想给 iPhone 扩展一个无线音频出口的 NAS 用户,非常值得推荐!几十行配置让它重新上岗,性价比很高。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
没有相关内容!
