Shairport Sync
Shairport Sync 是一个 AirPlay 音频播放器 — 它播放来自 iTunes、iOS 设备和第三方 AirPlay 源(如 ForkedDaapd 等)的音频流。由 Shairport Sync 驱动的设备播放的音频与源音频保持同步,因此也与播放相同源音频的类似设备同步。通过这种方式,可以轻松实现同步多房间音频。
Shairport Sync 不支持 AirPlay 视频或照片流。
Shairport Sync 是原始 Shairport 的一个分支,后者基于对 Apple 在其 AirPort Express 中使用的密钥进行逆向工程。请注意,此功能可能会由 Apple 自行决定删除。
安装
安装 shairport-sync 软件包。
avahi-daemon.service
。配置
配置文件位于 /etc/shairport-sync.conf
。它包含有用的注释和配置提示。更多文档请见 README 文件。
音频后端
Shairport Sync 可以很好地与 PulseAudio 配合使用,虽然其时序信息不如 Alsa 或 sndio 精确,但移除或禁用 PulseAudio 通常是不切实际的。在这种情况下,可以使用 pa 后端。[1]
如果您想更改后端,请检查输出设备列表,例如使用 alsa-utils 中的工具,并查看原始音频设备,例如
$ aplay -L
... sysdefault:CARD=PCH HDA Intel PCH, ALC269VC Analog Default Audio Device ...
然后添加设备名称
/etc/shairport-sync.conf
// These are parameters for the "alsa" audio back end. // For this section to be operative, Shairport Sync must be built with the following configuration flag: // --with-alsa alsa = { output_device = "sysdefault"; }
系统服务
启动
守护进程设置
如果您想将 shairport-sync 作为守护进程运行,您需要在 /run
中创建一个文件夹,在 Arch Linux 中默认情况下 /run
是一个 tempfs。要在启动时自动创建文件夹,请创建一个 tempfiles 配置文件,例如
/usr/lib/tmpfiles.d/shairport-sync.conf
d /run/shairport-sync 0755 username group
现在您可以使用 shairport-sync -d
将 shairport-sync 作为守护进程运行,并使用 shairport-sync -k
杀死守护进程。
用户服务
根据作者的说法,使用默认 PulseAudio 配置的 PulseAudio 后端只能作为用户服务工作。截至 2022-01-27,它似乎可以直接作为带有 pulseaudio (pipewire-pulse) 的系统服务工作,无需修改,也不需要用户服务。
要将 shairport-sync 作为用户守护进程运行,您可以将其添加到桌面环境自启动项,或启用 shairport-sync.service
作为用户单元。
接下来,编辑 shairport-sync.service
并注释掉以下行
[Unit] ... #Requires=avahi-daemon.service #After=avahi-daemon.service ... [Service] ... #User=shairport-sync #Group=shairport-sync ...