快轉到主要內容

Linux PipeWire透過AirPlay協定播放音樂

· 民國113年甲辰年
·
切換繁體/簡體 ·
分類 Linux系統 Linux使用技巧
標籤 AirPlay PipeWire
目錄

開源社群有開發UxPlay的專案,可以將Linux電腦當作AirPlay的接收端。

那麼,反過來呢?

無意間發現PipeWire有個模組叫做RAOP Discover (libpipewire-module-raop-discover),讓Linux電腦能將音樂傳輸到AirPlay音響。啟用後Linux會透過Avahi服務,探索區域網路中的AirPlay裝置,並自動連線。

PulseAudio也有叫做module-raop-discover的模組,可透過pipewire-pulse相容層運作。

這裡我們使用PipeWire載入模組。

1. 測試環境
#

Ubuntu 26.04

PipeWire版本:1.6.2


接收端得使用Mac電腦或者支援AirPlay的HomePod音響,某些第三方的AirPlay接收軟體也行,例如Android的AirScreen。

開源的UxPlay(版本1.69)無法處理RAOP的音訊播放請求。

2. 載入模組
#

  1. 安裝pipewire-zeroconf套件
sudo pacman -S pipewire-zeroconf
  1. 啟用Avahi服務
sudo systemctl enable --now avahi-daemon
  1. 用pw-cli載入模組
pw-cli -m load-module libpipewire-module-raop-discover
  1. 編輯~/.config/pipewire/pipewire.conf.d/raop-discover.conf,設定登入後自動載入
context.modules = [
   {
       name = libpipewire-module-raop-discover
       args = { }
   }
]
  1. GNOME與KDE桌面的音訊播放面板會自動出現AirPlay裝置,如果沒有出現,我們這裡用pavucontrol統一控制。

  2. 開啟pavucontrol,選取AirPlay作為輸出裝置

從音效條的動畫來看,播放是有輸出音效沒錯,但AirPlay接收端卻無法播放音效,可能是bug?

Helvum的圖表顯示AirPlay Sink確實有出現沒錯啊!

啟用除錯輸出:PIPEWIRE_DEBUG=3 pw-cli -m load-module libpipewire-module-raop-discover,也看不出所以然。沒幾下就broken pipe

參考資料
#

相關文章


感謝您的閱讀。我寫作是為了誠實表達想法,而不是追逐社群互動與流量。我很樂意傾聽你在仔細閱讀我文章之後的心得。若有內容勘誤 or 技術問題 or 回饋想法,歡迎透過本站「關於」頁面的Email與我聯絡。