Shairport Sync

来自 ArchWiki
(重定向自 Shairport)

Shairport Sync 是一个 AirPlay 音频播放器 — 它播放来自 iTunes、iOS 设备和第三方 AirPlay 源(如 ForkedDaapd 等)的音频流。由 Shairport Sync 驱动的设备播放的音频与源同步,因此也与播放相同源的类似设备同步。这样,无需困难即可实现同步多房间音频。

Shairport Sync 不支持 AirPlay 视频或照片流。

Shairport Sync 是原始 Shairport 的一个分支,后者基于对苹果 AirPort Express 中使用的密钥的反向工程。请注意,此功能可能会由苹果自行决定删除。

安装

安装 shairport-sync 软件包。

注意: Shairport Sync 需要 avahi-daemon 正在运行。你可以使用 systemd 启动/启用 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.service

守护进程设置

如果你想以守护进程方式运行 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
...

现在,你已准备好启用/启动 shairport-sync.service 作为用户

要获取日志,请使用日志或检查单元状态