快轉到主要內容

用樹莓派自幹Chromecast替代品,手機投放到大螢幕

分類   Linux系統 Self-hosting自架
標籤   Media Server Chromecast Raspberry Pi
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

將樹莓派改造為螢幕投放的串流裝置(俗稱投屏神器),從手機投放的多媒體到樹莓派播放,最好連手機螢幕也能一併鏡射上去。

1. 動機
#

雖然有買Chromecast,但是接觸到Degoogle思想後,不想被單一產品綁住,所以嘗試用樹莓派DIY一個類似Chromecast的裝置,採取開源方案。

加上我有一個閒置的喇叭,還有一塊雞肋的攜帶式螢幕,預計讓樹莓派搭配以上兩個組成一個接收手機投放的裝置。

樹莓派安裝的作業系統是原廠的Debian Linux,搭配LXDE桌面環境。

在Google TV推出以前,Chromecast最主要的功能就是:

  • 將手機的音訊串流到Chromecast裝置,包含串流音樂
  • 將離線的影片或音樂串流到Chromecast裝置
  • 鏡射手機螢幕到Chromecast裝置,包含串流Youtube影片
  • 電子相框,待機時輪播照片

我暫時還沒想要與智慧家電的整合,雖然要的話也是可以。例如搭配 Home Assiatant套件。

重點在於樹莓派要如何成為隨時能讓手機投放的裝置?

這個投影方案應該相容Android與iOS系統,電腦系統為次要支援對象。

投放過程應該要從手機端操作,不需要頻繁去動到樹莓派的設定。也就是主動從手機投放,而非用手機去存取遠端的內容。故Volumio、Jellyfin、Roon之類的方案不在考慮列表。

要講具體一點的場景的話,那就是我只要在手機按一個按鈕,就能選取要投放的對象,將正在看的影片投放到樹莓派 ———— 不論那個影片是Youtube還是Setting的。

2. 解法
#

用作業系統來分類吧。

iPhone相對單純,只要在樹莓派裝開源的AirPlay接收器 Uxplay,就能透過AirPlay播放iOS裝置上的影片和音樂,還有投放螢幕。

用Systemd將UxPlay設定為開機自動啟動服務,樹莓派便能隨時待命等待投放。由於UxPlay的視窗是疊在X Server上面的,不投放的時候視窗關閉,下面的桌布就會露出來,如是成為相片輪播功能。

用起來就像下圖展示的一樣:


Android手機情況比較混亂,有很多種解決方案,各家手機廠商甚至有自家的東西,但是我不想依賴特定廠商的解決方案。

投放的協定通常是走Wifi,頻寬比較大。以下談論的技術都是10年前就出現的了。

最常見的是「Chromecast」,背後使用Google Cast協定,大部分Android手機都支援,能將Android的螢幕和影音投影到Chromecast裝置。但Google Cast為專有協定,目前還沒有人破解出來。Google Play的AirScreen這類投屏軟體應該是私底下破解的。

一般人無法在沒有Google認證的情況下做出Chromecast接收端。目前最接近破解版Chromecast的應該是 Shanocast,沒有實用性。

另一個協定「Miracast」,這個只有部份Android手機支援,不是裝個APP就能解決的。說來就氣,Google為了挺自家的Chromecast,刻意讓Pixel不支援Miracast,連帶影響到使用原生系統的Sony Xperia。這種操作還滿像Apple搞AirPlay自己玩的作法。

如果有幸支援Miracast,於樹莓派裝 Miraclecast接收端,就能夠投影手機螢幕到樹莓派,以及播放影音。

除了Miracast以外,還有更老的「DLNA」技術,僅部份手機支援。樹莓派安裝 gmrender-resurrect作為接收端。


小結,以上的方案都有各種問題。如果真的要不分Android手機廠牌都能投影,在樹莓派跑 Scrcpy或許是個解法,螢幕和聲音都能傳過去。

但是它的用法比較像是從電腦控制Android手機,而非從手機端投影到電腦。

Scrcpy要從手機配對很麻煩,或許可以拿 KDE Connect作為中介,寫個script,遠端控制樹莓派執行adb pair指令,讓樹莓派自動與Android手機完成無線配對,再啟動Scrcpy視窗?

3. 以上協定全都不要?
#

最後再看看主流協定以外的替代方案。

以前有個叫做 Raspicast的專案,能將Android手機影片投放到樹莓派。可是技術太舊,沒法更新了。

NymphCast為一套完整的解決方案,開放原始碼,目前已經能夠投放音樂和影片,尚提供媒體伺服器的功能。

無須特殊硬體,安裝APP便能投放,作者有寫一個參考實現客戶端,能用來播放音樂,並且支援一對多。

另一個是 FCast,由FUTO組織所研發的協定,已經有接收端程式。配合他們家的 GrayJay APP就能投放影片。

GrayJay是將YouTube、Twitch、Oddysey整合在一起的大雜燴,算是異色版NewPipe吧。可惜GrayJay是假開源APP(看源軟體)。


雖然這二個方案的協定理論上能被其他軟體開發者實作,加入APP投放支援,但是這個市場可能還是太小眾了,目前沒有開發者有興趣加入支援。

最大宗的投放還是Chromecast和AirPlay,幾乎每一款軟體都有支援。

4. 總結
#

不要起爭議啦,乾脆把樹莓派接上音源線,做成藍芽喇叭, 透過PipeWire的藍芽讓手機能連線播放,這樣就沒有作業系統之分了(被打)。

到頭來,反而是iPhone + UxPlay的方案我用得最舒服。遺憾我是Android仔,只能認命用Chromecast。

相關文章

NymphCast,自架開源Chromecast替代品,適用樹莓派
分類   Linux系統 Self-hosting自架
標籤   Raspberry Pi Chromecast Media Server
Immich相簿架設與使用,界面長得最像Google相簿的照片管理軟體
分類   Linux系統 Self-hosting自架
標籤   Photo Gallery Google Photo Media Server
Jellyfin:用Docker自架可調畫質 + 硬體解碼的影片音樂串流伺服器
分類   Linux系統 Self-hosting自架
標籤   Media Server

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。