李·道斯韦特
您现有的 hifi 系统是否太旧而无法支持 Apple AirPlay?不想用质量较低的无线扬声器替换它,但又想播放音乐?这是一个常见的问题。好消息是,您可以用 Raspberry Pi 的成本构建一个 AirPlay 服务器,这样您就可以将音乐直接从 iPhone 或 iPad 流式传输到您的 hifi 系统。
本指南向您展示了如何设置,shairport-sync以便通过 7 个简单的步骤让 Raspberry Pi 播放音乐。
在你开始前
在将 Raspberry Pi 设置为 AirPlay 服务器之前,您需要做一些事情。
选择树莓派
你可能已经有一个了。大多数模型都应该可以工作,但 Pi Zero 将是一个问题,因为在 Zero 上建立网络更加困难。我建议您在开始之前使用谷歌搜索以了解如何执行此操作。
如果你有一个零 W 模型,那么事情会更容易,只要你没有任何其他重型东西在运行,那里的单核 CPU 就可以很好地进行流式传输。
如果您要购买新车,我建议您购买 Model 3。我使用 Model 3 A+ 没有任何问题,因为我想要更小的外形、wifi 和足够的噪音。Raspberry Pi 3 Model B的性能同样出色。
选择操作系统
您需要的第一件事是带有适当操作系统的 SD 卡。现在有很多不同的选择,从“传统的”Raspbian 到专用的媒体操作系统,甚至是 Windows 10 IoT。
现在,AirPlay 服务器不像 Kodi 那样需要丰富的图形界面。完全可以在没有 UI 的情况下运行它,因为所有用户交互都将在 iOS 或 macOS 设备上完成。拥有某种显示当前艺术家和曲目信息的显示器可能会很好,但这是一个非常艰巨的目标。现在,集中精力让服务器正常工作!
因此,随着这一点的建立,您应该寻找一个更准系统的系统。不需要大量的应用程序,为了实现无故障操作,您希望运行的进程越少越好。这是为媒体流应用程序保留尽可能多的 CPU 和 RAM。
一个问题是一些准系统操作系统,例如 Arch Linux,是针对具有相当多 Linux 知识的人。它们非常先进,您在安装第三方应用程序和库时更有可能遇到问题。
在光谱的另一端,有一些专用于此任务的发行版,应该开箱即用,但您不会从中学到任何东西。
出于这些原因,如果这是您第一次安装 AirPlay 设备,我建议您选择 Raspbian Lite。它是成熟的,因为它源自原始的 Raspbian 操作系统,但它已经删除了 GUI 以节省资源。它完全由命令行驱动,可以轻松配置为以“无头”模式运行,即无需键盘或显示器即可通过网络完全远程访问。这使得它非常适合放入设备中,希望您能在此过程中学到一些东西。
安装 Raspbian Lite 并启用 SSH
如果您已经进行了安装,或者有信心自己完成该部分,请继续。
否则请按照下面的教程进行操作,该教程将带您逐步从原始 Raspberry Pi 到支持 SSH 的 Raspbian Lite:-
如何在 30 分钟内设置您可以从任何地方控制的 Raspberry Pi
设置完成后,您应该能够从网络上的另一台计算机远程登录 Raspberry Pi,并且您的 Pi 应该可以访问互联网。
配置 AirPlay 服务器
首先,您需要安装一些依赖项,以便构建 AirPlay 服务器应用程序。运行以下命令:-
sudo apt-get update sudo apt-get install autoconf automake avahi-daemon build-essential git libasound2-dev libavahi-client-dev libconfig-dev libdaemon-dev libpopt-dev libssl-dev libtool xmltoman
2. 构建并安装 shairport-sync
shairport-sync是由Mike Brady维护的一款很棒的软件。它将您的 Linux 机器变成 Apple AirPlay 服务器。它最好的事情之一是它完全在命令行上运行,虽然它有上百万个配置选项,但开箱即用非常容易。
首先从 github 上抓取它:-
git clone https://github.com/mikebrady/shairport-sync.git
现在导航到shairport-sync目录并配置构建:-
cd shairport-sync autoreconf -i -f ./configure --with-alsa --with-avahi --with-ssl=openssl --with-systemd --with-metadata
最后构建并安装应用程序:-
make sudo make install
在此过程结束时,您应该可以正常安装shairport-sync.
3.配置音频输出
您现在可以测试 Airplay 音频了。首先你需要一些硬件。以下任何一项都有效:-
耳机,或任何带有 3 毫米插孔的旧耳塞
来自台式电脑的有源扬声器
或者,如果您是认真的,可以使用带有电缆的高保真放大器,该电缆可将 3.5 毫米插孔转换为一对 RCA 唱机插头
现在您需要在 Raspberry Pi 上配置音频路径。它通常设置为“自动”,但您需要强制它连接到 3.5 毫米插孔。运行raspi-config:-
sudo raspi-config
选择7. Advanced Options ,然后选择A4。Audio ,然后选择选项1. Force 3.5mm ('headphone') jack 。这将强制音频路径到 3.5 毫米耳机插孔。
4.设置音量
音量可能会非常低,因此使用以下方法将其更改为最大:-
amixer sset PCM,0 100%
音量设置有点难用,因为它是以dB (分贝)为单位配置的,如果您不是工程师,这会非常不直观。以分贝表示,满音量一般为0dB,零音量在-100dB左右。所以好像这还不够糟糕——这是主要的脑筋急转弯—— 分贝标度不是线性的。
因此,当您在上面的命令中使用 % 表示法时amixer,您可能会认为它像普通音量控制一样工作,但事实并非如此。如果你想让音量稍微低一点,你可以把它改成 80%:-
amixer sset PCM,0 80%
您会看到输出报告大约为 -17dB,但至关重要的是您会注意到它几乎听不见。百分比直接转换为分贝,结果是您只能真正听到超过 70% 左右的任何声音。
所以,TLDR:将音量设置为 100%。
5. 测试 AirPlay 到 Raspberry Pi
现在开始shairport-sync:-
sudo service shairport-sync start
在你开始使用 AirPlay 之前什么都不会发生,所以拿一部 iPhone 或支持 AirPlay 的东西,并确保它与 Raspberry Pi 在同一个网络上。开始播放一些音乐,然后从 AirPlay 图标中选择“raspberrypi”,然后选择“完成”。
如果您听不到任何声音,请将您的 iPhone(或您使用的任何来源)音量调高,因为 Raspberry Pi 上的 PCM(耳机)输出不是很好。
此时您应该可以听到通过 Raspberry Pi 播放的音乐!
6.配置shairport-sync自动启动
显然,在专用媒体播放器中,您不想手动启动服务:您希望shairport-sync在 Pi 启动后立即运行。幸运的是,我们配置了它的systemd运行,这意味着我们可以轻松地使服务自动启动。只需输入:-
sudo systemctl enable shairport-sync
这将输出类似于此的消息:-
Created symlink /etc/systemd/system/multi-user.target.wants/shairport-sync.service → /lib/systemd/system/shairport-sync.service.
这就是创建持久 AirPlay 服务器所需要做的全部工作。重启:-
sudo reboot
当您通过 SSH 重新登录时,您可以shairport-sync像这样查询服务:-
sudo systemctl status shairport-sync.service
这将(希望)产生类似的东西: -
● shairport-sync.service - Shairport Sync - AirPlay Audio Receiver Loaded: loaded (/lib/systemd/system/shairport-sync.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2018-12-05 22:30:26 GMT; 1min 16s ago Main PID: 515 (shairport-sync) CGroup: /system.slice/shairport-sync.service └─515 /usr/local/bin/shairport-sync Dec 05 22:30:26 raspberrypi systemd[1]: Started Shairport Sync - AirPlay Audio Receiver.
因此,您现在应该可以在每次启动树莓派时通过 AirPlay 播放树莓派。
7. 防止 Wifi 掉线
Raspberry Pi wifi 会周期性进入省电模式,这会在使用 AirPlay 时导致严重的音频故障。您可以通过在文件中添加一行来防止这种情况/etc/network/interfaces 。使用以下命令编辑文件:-
sudo nano /etc/network/interfaces
转到文件末尾并添加行:-
# Disable wifi power management wireless-power off
在这一切之后,重新启动:-
sudo reboot
现在你应该启动并运行了!
故障排除
如果您看不到raspberrypiAirPlay 中列出的设备,请检查shairport-sync服务是否正在运行:-
sudo systemctl status shairport-sync.service
检查它是否与您的 AirPlay 源设备在同一个 LAN 上,最好在同一个 Wifi 网络上,并且在范围内。
如果您已连接到 AirPlay 但听不到任何音频,请检查音量是否足够高。
在源设备上,只需将音量滑动到大约 80–90%。
对于 Raspberry Pi PCM 音频,使用以下方法检查音量设置:-
amixer sget PCM
这将像这样输出当前设置:-
Mono: Playback 400 [100%] [4.00dB] [on]
如果您看到任何低于 70% (-27dB) 的声音,那么您可能听不到。最好将此设置保持在 100%。
显然也要检查您的音频硬件!
音频质量注意事项
这篇文章在 Hacker News 上发表后引起了很大的兴趣,许多人提到了 Raspberry Pi 内置音频插孔的音频质量差。我正计划写一篇关于使用 DAC 板来改善音频的后续文章,但在我开始讨论之前,我可能应该在这里提及它。
我试过两个 DAC 板。第一个是 IQAudIO PiDAC+,它具有适合新的 Pi 3 Model A+ 的完美外形。我还在 Pi Zero W 上使用了HiFiBerry DAC+ Zero 。它们的设置都非常简单,而且听起来很棒。
另一个我还没有亲自使用过的非常流行的是Pimoroni pHAT DAC 。
我还没有对它们进行认真的比较测试,但是选择其中一个,你会发现音频质量有了巨大的提高。
谢谢!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !