🌚

用Raspberry Pi实现音频Airplay

Posted at — Apr 17, 2017
#树莓派 #最佳实践

用树莓派做音频airplay效果不错,老书架音箱又可以用起来了。

实现方式是shairplay-sync,利用HDMI转VGA线上的3.5mm音频输出孔,因为我的树莓派2B的3.5mm音视频输出口没有合适的转接头。

我用的是Arch Linux ARM,需要手动开启HDMI输出。修改/boot/config.txt

1
2
3
4
hdmi_force_hotplug=1
hdmi_drive=2
config_hdmi_boost=4
dtparam=audio=on

重启后,用alsamixer把树莓派音量调整到最大值。

AUR里没有针对ARM的shairplay-sync,需要手动编译:

1
git clone https://github.com/mikebrady/shairport-sync.git
1
2
# 生成configure
autoreconf -i -f
1
2
3
4
5
6
# 针对systemd编译

./configure --sysconfdir=/etc --with-alsa --with-avahi --with-ssl=openssl --with-metadata --with-soxr --with-systemd


# END
1
2
3
4
5
6
7
8
# 如果shairport-sync用户不存在,新增用户和用户组

getent group shairport-sync &>/dev/null || sudo groupadd -r shairport-sync >/dev/null

getent passwd shairport-sync &> /dev/null || sudo useradd -r -M -g shairport-sync -s /usr/bin/nologin -G audio shairport-sync >/dev/null


# END

airplay默认的服务名和树莓派的hostname一致,可以到/etc/shairport-sync.conf里修改:

general = {
    name = "pi";
}

FAQ

ALSA lib confmisc.c:767:(parse_card) cannot find card ‘0’

树莓派没声音,尝试用mpg123播放mp3时报这个错。解决办法是在/boot/config.txt里增加dtparam=audio=on