收起左侧

别让 NAS 只当网盘!Docker 部署 AirPlay,秒变家庭音响中心

0
回复
29
查看
[ 复制链接 ]

204

主题

18

回帖

0

牛值

江湖新锐

社区上线纪念勋章fnOS1.0上线纪念勋章EVO2产品纪念

Shairport Sync:

一款开源 AirPlay 音频接收器,支持 AirPlay 1/2(部分功能),让你的 NAS 或树莓派秒变家庭音响中心,打造多房间同步播放的体验。

项目特点:

  • 协议支持:既可以作为经典的 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 就行

下面就是具体看每个卡下的 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                   (蜂鸣器)

至于 output_format 一般都是通用的填 S16 就行,也可以输入命令查看

aplay -D plughw:1,0 --dump-hw-params /dev/zero 2>&1 | grep FORMAT

使用

确认容器日志无报错后,在 iPhone/Mac 的控制中心点击音频投送,就能在列表里看到设备。

启动容器后查看日志,应该是没有警告或者报错的

下拉控制中心,点击投送就能看到接收器了

测试过 fnOS(笔记本)和 UGOS Pro(绿联全闪)两个系统都没问题,有扬声器就是扬声器播放,插上 3.5mm 音频也能正常出声

如果配置没有问题,容器日志也没报错,同时也可以正常找到设备,但就是没声音,大概率是声卡默认处于静音状态(比较常见情况)。可以安装 ALSA 工具包,通过 amixer 命令解除静音、调高音量,直接复制下面命令运行即可。

# 安装 alsa-utils
apt update && apt install -y alsa-utils

# 开音量+去静音
amixer -c 0 sset Master 100% unmute

总结

Shairport Sync 这款应用可以配置的参数还有很多,本教程只是将最基础的功能搭建起来。NTP 同步精度、解码后处理、多房间延迟对齐,这些高阶配置官方文档里都有。如果你的手里有闲置音箱/功放、又想给 iPhone 扩展一个无线音频出口的 NAS 用户,非常值得推荐!几十行配置让它重新上岗,性价比很高。

综合推荐:⭐⭐⭐(吃灰设备重新上岗,AirPlay 生态无缝接入)

使用体验:⭐⭐⭐(部署不复杂,但需要跟着步骤)

部署难易:⭐⭐⭐**(中规中矩)**︎

收藏
送赞
分享
不定时分享 NAS 教程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则