還記得當年 iPod 的廣告 嗎? 只要手上拿著 iPod、頭上掛著耳機,馬上就晉升成世上最潮的那群人;不過,獨樂樂不如眾樂樂,接上一組超重低音的大喇叭,化身成 DJ,跟大家一起分享自己最愛的音樂,那更是潮爆了!!!
可是,為了要接上喇叭,非得接上一條長長的 3.5mm 訊號線就算了;iPod 不能放在自己的手上,只能黏在喇叭旁邊也勉強接受;但是為了換個歌曲,還要專程跑到喇叭旁邊當壁花換歌,那可就遜到最高點了.....
所以,Apple 為我們達成了 iPod 在手,音樂無窮的目標,就是要透過 AirPlay 這個技術來實現我們的願望。
AirPlay 是 Apple 開發的一種無線播放技術,透過 WiFi 讓 iPhone、iPad、iPod、Mac 可以不用連接其他線材,就可以讓音樂、影片及照片串流遠端播放到支援 AirPlay 的設備上,如 AppleTV、AirPort Express ... 等;在初期只支援音樂串流的時代被命名為 AirTunes。
以下的示範環境就以 CentOS 6.5 x86 為接收端,負責連接喇叭播放音樂,而 iPhone 4S + iOS 8.1 為傳送端,使用 Youtube App 播放影片,負責送出背景音樂,來進行所有的實作。
注意事項
- 僅支援音樂的傳送,不支援影片及照片串流的傳送,所以就算我們播放影片,也是只有音樂會傳過去,畫面依然只會在 iPhone 的螢幕上顯示。
- 所有傳送端及接收端的設備,不論是有線還是無線,都必須連到同一個網段的區域網路裡。
- App 本身必須支援 AirPlay,若是不支援的話,就算 iPhone 已經連上了 AirPlay,同樣無法遠端播放。
安裝主程式
我們要用到的是 shairport 這一個套件,它原本是由 Perl 寫成的,後來 改用 C 重寫,需要用到的相依套件有 OpenSSL、libao、PulseAudio、avahi。
先安裝必要的相依套件。
yum -y install openssl-devel libao-devel pulseaudio-libs-devel alsa-lib-devel avahi-devel alsa-utils
中間過程省略 ...
安裝 Git。
yum -y install git
中間過程省略 ...
用 Git 把原始碼從 GitHub 複製下來。
git clone https://github.com/abrasive/shairport.git
接著進行編譯。
cd shairport
./configure
make
安裝過程沒有出現錯誤訊息的話,就可以測試是否能正常啟動了。
./shairport -a 'My AirPort Speaker'
出現「Starting Shairport」及「 Listening for connections.」的訊息後,便代表編譯成功,就可以按 Ctrl + C 停止 shairport 的服務。
我們可以看一下所有的可用參數。
./shairport -h
最後,就可以用我們自訂的顯示名稱在背景運作了。
./shairport -a 'My AirPort Speaker' -d
iPhone 連線播放
只有一個最重要的動作,就是讓 iPhone 的 WiFi 連上與 CentOS 相同網段的區域網路即可。
在 iOS 8 裡,從畫面下方往上滑入,打開控制中心。
iOS 只要偵測到有支援 AirPlay 的設備,就會自動出現 AirPlay 的選項。
預設是由 iPhone 本身的喇叭播放。
改成 AirPlay 喇叭即可。
或是在支援 AirPlay 的 App 裡切換就可以了。
OK!!!
Let's enjoy our favorite music with AirPlay Speaker .......
異常排除
- 啟動 shairport 的時候,出現「FATAL: could not bind any listen sockets! Shutting down...」的錯誤訊息。
這代表 shairport 已經被啟動成背景服務了,無法重覆啟動。
- shairport 連接的喇叭沒有聲音。
確認 CentOS 裡的音效卡被靜音或設定太小聲了,可調整的音量範圍由 0 到 64 之間 (0% 到 100%)。
amixer set Master 64 unmute
系列文章
- 自製「AirPort Express」實現 iPhone、iPod、iPad、Mac 透過 AirPlay 無線播放音樂
- Raspberry Pi 的應用 - iOS & OSX 的好朋友,AirPlay 無線喇叭
參考資料
- Mobile01 - Apple AirPlay家中音樂多室串流應用篇
- Git Hub - abrasive / shairport
- TecloTech - Turn an old laptop into an AirPlay receiver with Shairport and Ubuntu Server
更新紀錄
- 2014/11/05 撰文。
0 意見 :
張貼留言