相比在路上使用耳機「拘束」著欣賞音樂,在家中因為空間和環境上的變化,聽音樂的「姿勢」也比以往要自由得多。空間允許的話,我在家聽音樂都會接上「電腦音箱」,後面還非常時髦地用上無線音箱(當然這裡說的是類似藍芽音箱或者 Sonos 音箱)。雖然在家聽歌已經可以非常方便地透過藍芽連結的方式將手機和音箱連線,但從方便度上都沒有 AirPlay 那麼順滑——無需藍芽連線那樣需要配對,在 AirPlay 找到對應的裝置選擇就可以出聲。
這麼方便的音樂欣賞新姿勢我竟然都無福消受,原因就是我家中那些傳統的音箱都不支援 AirPlay,甚至我的 Sonos Play 1 也不在 AirPlay 支援之列,思來想去決定想辦法折騰一下讓他們都能支援 AirPlay ——我的目光聚焦到了家裡這臺「萬能」的 NAS:要不透過 NAS 來作為 AIrPlay 服務中轉站從而間接地讓舊音箱也可以支援 AirPlay?
從最簡單的做起:將老 Sonos 音箱轉成 AirPlay萬事開頭難,只要肯放棄,我首先將「折騰」目標轉向了我的這臺 Sonos Play 1,這款定位入門級的 Sonos 音箱當然是網路音箱——你可以在 DLNA 裝置裡面看到這款音箱,但唯獨就是不支援 AirPlay(後面的 AirPlay 2 那更不用想了),當然有了 NAS 作為中轉站就簡單多,因為這裡有針對 NAS 的現成的解決方案,就是將這些老版本(入門版)Sonos 轉成 AirPlay 音箱。
還是用家中的群暉做例子,實現上其實只需要新增一個第三方的套件並啟用即可,這裡首先是開啟群暉的「套件中心」。
使用瀏覽器訪問 AirConnect 這個 GitHub 專案,根據你的群暉 CPU 架構下載對應的構建包(我的群暉是 X86-64 架構)。
然後回到群暉的套件中心,點選「手動安裝」並選擇剛才下載的構建包一路 Next 即可,需要注意的是 AirConnect 並沒有獨立的 GUI 介面(其實就是一個執行指令碼的集合),因此安裝完畢之後在傳統的應用主選單中是看不到 AirConnect 應用圖示。因此是否正常執行只有一個方法:在「套件中心」的「已安裝」來點選啟動來執行。
將 NAS 上的 USB 音箱轉成 AirPlay 播放器我把 NAS 打造成了家用的媒體播放器,因此我透過一個 USB DAC 將傳統的 3.5mm 有源音箱連線到 NAS 上,從而實現了透過手機 App 來遙控播放 NAS 中儲存的數字音樂。但這個音樂欣賞方案存在一定的侷限性,比如說只能播放本地的音樂,而不能利用他來播放流媒體,當然也就無法實現類似 AirPlay 的推播效果。
當然,如果透過 NAS 作為「轉換平臺」,也可以透過軟體的方式來實現將傳統的音箱轉換成 AirPlay 播放器,而我嘗試了一下三種形式來實現。
使用 Shairport Sync 的 Docker 映象我首先考慮的是透過相對比較「一鍵」傻瓜式的解決方案,然後找到了這個名為 Shairport Sync 的工具包,基於 Linux 或者 macOS,可以將裝置中的音訊裝置轉成 AirPlay 輸出工具,並且考慮到要透過最小的硬體開銷成本來實現並保證一定的環境隔離,Docker 執行肯定最為方便。
但最終試下來就是無法成功,一方面是群暉的 Docker 元件不支援呼叫外設(需在命令列下進行操作),且 Shairport Sync 的部分使用的埠和 DSM 的管理埠衝突(均使用了 5000 埠),不得已因此最終放棄了該方法。
透過 Linux 虛擬機器執行 Shairport Sync直接在 Docker 上執行存在埠衝突等問題,那麼使用虛擬機器來實現肯定能避坑,一方面虛機有獨立的 IP 和埠,避免衝突,另一方面則是群暉 VMM 可以實現將真實的 USB 硬體直通到虛擬機器中,這樣配置起來呼叫起來也更簡單。
即便你可以識別音訊裝置,啟動服務仍然複雜繁瑣
但實際配置後發現,Shairport Sync 的安裝並不簡單,不少發行版並不支援直接從源上安裝,並且安裝後還需要針對硬體進行配置上的重新設定,改到後面都沒辦法確定 USB 音訊是否可以在我選擇的發行版上正常驅動,加上大量的包以及依賴的安裝使得解決方案異常複雜,最終選擇放棄了該方案。
透過 Windows 虛擬機器執行 Airserver如果把 NAS 當作一臺電腦,加上 USB DAC 其實就和傳統的桌面電腦一樣,這使得我想起以前在 Windows 上有類似的應用可以將本機變成一個 AirPlay 伺服器。因此我想到了在 NAS 上建立一個 Windows 虛擬機器來實現類似的功能,加上 VMM 支援硬體直通,可以直接向虛擬機器暴露真實 USB 硬體,而我的 USB DAC 在 Windows 上完全免驅,因此我最終選擇了該方案來實現。
首先開啟群暉的 VMM 來「新建虛擬機器」,選擇「Windows」虛擬機器,並在「其他設定」中設定 USB 為 「USB 2.0」(Windows 7 對於 USB 3.0 支援存在缺陷),並選擇免驅的「USB DAC」裝置,之後就是建立 Windows 虛擬機器以及安裝系統的步驟,尤其是需要確保 USB 音訊裝置可以正常驅動。
之後的步驟就是在 Windows 虛擬機器中安裝 AirServer 並開啟服務, 需要注意的是需要為虛機開啟網路裝置分享。
後面再開啟 iOS 或者 Mac 並開啟音樂 App,在「隔空播放」中就可以看到透過 AirServer 建立的 AirPlay 音箱了,選中後連線在 NAS 上的音箱就能聽到聲音了。
總結一系列的折騰下來,我終於把家中的老款 Sonos 音箱以及傳統的非網路音箱轉變成了 AirPlay 播放器,這在一定程度上滿足了我想隨時將音樂「推到」音箱上的願望,但總的來說這樣的解決方案還是不夠完美——一方面是傳統音箱上最終解決方案和桌面裝置上將 iPhone 上音訊推送到電腦桌面一致,系統開銷變大(開了一臺虛擬機器);另一方面就是軟體穩定性上,存在延遲卡頓等問題,當然如果有條件的話,還是選擇硬體解決方案算是真正的一勞永逸吧。