我們之前曾經在 Raspberry Pi 的應用 - iOS & OSX 的好朋友,AirPlay 無線喇叭 這篇文章裡,實作了 Airplay 無線喇叭功能。
可是,原作者早在 2014 年就已經停止維護在 GitHub 上的專案了,如果出現了 Bug 或是不支援新的 OS X / iOS 的話,這可怎麼辦才好?!
最後更新日期:2017/01/26
別怕!!!
還好有另一位網友利用原專案的原始碼,建立了一個名叫 shairport-sync 的新專案,不只延續了原本的功能,還改善了:
- 更好的音量控制範圍
- 支援硬體設備上的靜音功能
- 不會因為另一個串流請求而造成播放的中斷
- 支援描述資料 (Metadata)
- 支援 RAW 格式
- 更容易自行編輯
「
不過,依然沒有辦法串流播放視訊跟照片......XD
事前準備
請先參閱 [Raspberry Pi 3] 老朋友,新功能!關於那些開箱後馬上要作的事,完成初始設定。
使用 Raspberry Pi 0/1/2 也一樣先完成基本的前置作業
也別忘了讓 Raspberry Pi 有線網路或是無線網路的連線,取得與 Mac / iPhone / iPad / iPod 相同網段的 IP 位址。
開始安裝
把 shairport-sync 專案從 GitHub 複製回來。
git clone https://github.com/mikebrady/shairport-sync.git
安裝必要的相依套件。
sudo apt-get -y install build-essential git autoconf automake libtool libdaemon-dev libasound2-dev libpopt-dev libconfig-dev avahi-daemon libavahi-client-dev libssl-dev libpolarssl-dev libsoxr-dev
開始編譯。
cd shairport-sync
autoreconf -i -f
./configure --with-alsa --with-stdout --with-pipe --with-avahi --with-ssl=openssl --with-metadata --with-systemd
make
建立專屬的群組和使用者。
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
安裝到系統裡。
sudo make install
編輯主設定檔,如果不在 /etc 目錄裡,看一下是不是在 /usr/local/etc 。
sudo vi /etc/shairport-sync.conf
這邊有不少可以修改的參數,把註解符號 // 刪除就可以改用自訂的設定值。
- name - 預設的顯示名稱,可以輸入中文名稱。
- password - 用密碼管制可以連線的用戶端。
- port - 服務的主要通訊埠。
- udp_port_base, udp_port_range - 串流用的通訊埠範圍。
啟動服務。
sudo systemctl restart shairport-sync && sudo systemctl status shairport-sync
設定成開機後自動啟動。
sudo systemctl enable shairport-sync
在 Mac 和 iPhone 使用
Mac + OS X 10.11.4
在最上方的選單列可以看到音量的圖示,按住 option 鍵再點選它,就會跳出不一樣的功能選單。
只要 Raspberry Pi 3 跟 Mac 的網路在同一個網段裡,就可以看到 shairport-sync 產生出來的 AirPlay 喇叭,勾選它就可以直接將系統裡所有的音樂 + 音效全部轉過去 AirPlay 喇叭來播放。
當然也可以單獨將 iTunes 上面的音樂,轉到這個 AirPlay 喇叭上播放。
iPhone + iOS 9.2.1
在 iPhone 上面使用方法更簡單,從畫面最下方往上滑,叫出控制中心之後,就會看到 AirPlay 的圖示。
勾選我們建立的 AirPlay 喇叭之後,同樣也可以讓所有音樂 + 音效都從 AirPlay 喇叭來播放了。
多室串流
只要軟體有支援 multi-room 的功能,我們只要在家中或辦公室全部的房間裡各自用 Raspberry Pi 啟用 AirPlay 來接上喇叭。
就可以讓所有的空間無縫接軌,全都沉浸在相同的音樂氛圍裡!
參考資料
圖片來源
- Photo via Visual hunt
更新紀錄
- 2016/05/01 撰文。
- 2017/01/26 更新,補充設定檔的所在目錄。
大大您好, 這真是圖文並茂的詳細文章, 讓在下能一路做到最後, iPhone也找到Airplay的設備了
回覆刪除可是撥放起來還是沒有聲音, 想要請問如何解決?
我是用Pi3, Raspbain系統, 並且在該系統下還有加裝Kodi(不知道這是否會影響?)
然後iPhone6上安裝的是iOS 10.2.1 , 我的Pi3是透過HDMI將聲音畫面都接到電視上
無論是Raspbain或者是Kodi 都已使用多媒體來確定聲音可正常輸出, 或者音量在正常範圍內
當我在手機上使用iTune撥放音樂時, 在下拉選單中切換Airplay的介面後, 有找到預設的Raspberrypi
但當我將音樂切換過去後, 就都沒有聲音了
我不死心, 隨便拿個耳機同時往Pi3的聲音輸出孔一插, 仍然沒有聲音..Raspbain或Kodi皆同
(kodi我有打開Airplay支援)
請問我是否有哪邊做錯了呢? 謝謝
因為 Raspbian 不會同時把音效輸出到兩種介面,你既然已經從 HDMI 輸出了,3.5mm Audio 沒聲音也是正常的。
刪除你可以參考一下我這篇文章,再做個小小修改,把預設的輸出介面統一指定成 HDMI,讓 AirPlay 也從 HDMI 走 ...
http://blog.itist.tw/2015/05/playing-audio-via-usb-sound-device-with-raspberry-pi.html