banner
cylll

cylll

honorificabilitudinitatibus
twitter

為樹莓派換上AirPlay 2

這兩天在 Reddit 上看到一個關於「AirPlay 2 on Linux」的帖子,其中推薦了 Shairport Sync 項目,於是我打算給家裡在用的樹莓派的 AirPlay 升級一下。大家有能力的可以直接去看原文,裡面文件寫的很詳細

準備#

  • 一台 Linux 或 FreeBSD 的設備,其性能至少要大於等於樹莓派 2

  • 319 和 320 端口沒有被佔用

  • 一個音箱(最好是 3.5mm 接口)

開始安裝#

首選建議大家先將系統更新到最新狀態,可以大大減少許多莫名其妙的問題。

sudo apt-get update #檢查更新
sudo apt-get upgrade #執行更新

關閉 Wi-Fi 節能管理#

如果你使用設備使用 Wi-Fi 連接的話,需要將節能管理關閉,可以避免安裝後設備進入節能後搜索不到音箱。

iwconfig wlan0 power off

安裝依賴#

apt install --no-install-recommends build-essential git xxd xmltoman \ autoconf automake libtool libpopt-dev libconfig-dev libasound2-dev \ avahi-daemon libavahi-client-dev libssl-dev libsoxr-dev libplist-dev \ libsodium-dev libavutil-dev libavcodec-dev libavformat-dev uuid-dev libgcrypt-dev

nqptp#

nqptp是 Shairport Sync 監控時間的重要依賴,需要手動編譯安裝。

git clone https://github.com/mikebrady/nqptp.git #下載項目
cd nqptp #進入項目目錄
autoreconf -fi #編譯
./configure --with-systemd-startup #配置
make #構建環境
make install #安裝

安裝完畢後,需要啟動 nqptp:

systemctl enable nqptp #設置自動啟動
systemctl start nqptp #啟動nqptp

sps-alsa-explore#

一個可以幫助我們 Shairport Sync 的工具,可以很直觀的列出當前的音頻輸出設備,需要手動編譯安裝。

git clone https://github.com/mikebrady/sps-alsa-explore.git #下載項目
cd sps-alsa-explore #進入項目目錄
autoreconf -fi #編譯
./configure #配置
make #構建環境

將音箱連接到樹莓派,然後在 sps-alsa-explore 目錄下執行./sps-alsa-explore

image

記錄下Device Full Name:"hw:Headphones"Possible mixers:"Headphone" 在後續配置文件中使用。

 #

編譯安裝 Shairport Sync#

git clone https://github.com/mikebrady/shairport-sync.git #下載項目
cd shairport-sync  #進入項目目錄
git checkout development #切換到development分支
autoreconf -fi #編譯
./configure --sysconfdir=/etc --with-alsa --with-soxr --with-avahi --with-ssl=openssl --with-systemd --with-airplay-2 #配置
make -j #構建環境
make install #安裝

   #

配置 Shairport Sync#

Shairport Sync 的配置文件路徑在/etc/shairport-sync.conf,其中輸出設備這裡需要配置一下,熟悉 vi/vim 的朋友可以直接 sudo vi /etc/shairport-sync.conf配置一下,其中output_devicemixer_control_name都可以在前面./sps-alsa-explore的結果中找到。

alsa =
{
  output_device = "hw:Headphones";
  mixer_control_name = "Headphone";
};

配置文件中有大量註釋說明,大家可以按需配置。

啟動 Shairport Sync#

systemctl enable shairport-sync #設置自動啟動
systemctl start shairport-sync #啟動Shairport Sync

添加到 HomeKit#

在添加配件時,點擊「沒有代碼或無法掃描?」,家庭 app 就會發現 AirPlay 2 設備,點擊即可加入。

添加到 HomeKit

遇到的問題#

在「多房間音頻系統」播放時存在延遲,我翻了下Shairport Sync的 Issues 發現並不是所有人都存在這個問題,通常 HDMI 連接的設備都會存在 100 毫秒左右的延遲。在文檔的常見問題中給出的解決方法是手動設置一個延遲,在配置文件/etc/shairport-sync.conf中有一個audio_backend_latency_offset_in_seconds配置項單位為秒:

audio_backend_latency_offset_in_seconds 配置

有其他問題的話可以先到文檔中排查 「Troubleshooting」

使用感受#

折騰完用了幾天後感覺還算是可用狀態,借此也讓我體驗到「多房間音頻系統」的功能,但僅限於聽歌或播客之類的音頻,AirPlay 的延遲一就是個頭疼的問題,許多視頻軟件由於沒有適配會出現音畫不同步問題,就算適配 AirPlay 之後也會存在一個緩衝的延遲。但作為音頻播放器在「多房間音頻系統」時還是很方便的。

多房間音頻系統

當然對於不喜歡折騰的人,Airport Express 2 (A1392) 也許是更好的選擇,簡單配置就可以讓音箱支持 AirPlay2,咸魚價格在 150~200。

Airport Express 2 (A1392)

參考資料#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。