將樹莓派改造為串流裝置,從手機投放的多媒體到樹莓派播放,最好連手機螢幕也能一併 鏡射上去。 https://i.imgur.com/t67iDFN.jpg
動機 雖然有買Chromecast,但是不想被單一產品綁住,所以嘗試用樹莓派DIY一個類似 Chromecast的裝置,採取開源方案。 加上我有一個閒置的喇叭,還有一塊雞肋的攜帶式螢幕,預計讓樹莓派搭配以上兩個組成 一個接收手機投放的裝置。 樹莓派安裝的作業系統是原廠的Debian Linux,搭配LXDE桌面環境。 在Google TV推出以前,Chromecast最主要的功能就是: - 將手機的音訊串流到Chromecast裝置,包含串流音樂 - 將離線的影片或音樂串流到Chromecast裝置 - 鏡射手機螢幕到Chromecast裝置,包含串流Youtube影片 - 電子相框,待機時輪播照片 我暫時還沒想要與智慧家電的整合,雖然要的話也是可以。例如搭配HomeAssiatant套件 。 重點在於樹莓派要如何成為隨時能讓手機投放的裝置? 這個投影方案應該相容Android與iOS系統,電腦系統為次要支援對象。 投放過程應該要從手機端操作,不需要頻繁去動到樹莓派的設定。也就是主動從手機投放 ,而非用手機去存取遠端的內容。故Volumio、Jellyfin、Roon之類的方案不在考慮列表 。 要講具體一點的場景的話,那就是我只要在手機按一個按鈕,就能選取要投放的對象,將 正在看的影片投放到樹莓派 ———— 不論那個影片是Youtube還是Setting的。 解法 用作業系統來分類吧。 iPhone相對單純,只要在樹莓派裝開源的AirPlay接收器「Uxplay」,就能透過AirPlay播 放iOS裝置上的影片和音樂,還有投放螢幕。 https://github.com/antimof/UxPlay 用Systemd將UxPlay設定為開機自動啟動服務,樹莓派便能隨時待命等待投放。由於 UxPlay的視窗是疊在X Server上面的,不投放的時候視窗關閉,下面的桌布就會露出來, 如是成為相片輪播功能。 用起來就像下圖展示的一樣: https://i.imgur.com/5xSCI2v.jpg
Android手機情況比較混亂,有很多種解決方案,各家手機廠商甚至有自家的東西,但是 我不想依賴特定廠商的解決方案。 投放的協定通常是走Wifi,頻寬比較大。 最常見的是「Chromecast」,背後使用Google Cast協定,大部分Android手機都支援,能 將Android的螢幕和音效投影到Chromecast裝置。但Google Cast為專有協定,目前還沒有 人破解出來。AirScreen這類投屏軟體應該是私底下破解的。 一般人無法在沒有Google認證的情況下做出Chromecast接收端。目前最接近破解版 Chromecast的應該是這個Shanocast: https://github.com/rgerganov/shanocast 另一個協定「Miracast」,這個只有部份Android手機支援(Google刻意讓Pixel不支援 Miracast,真的很壞,連帶影響到Sony Xperia),不是裝個APP就能解決的。如果有幸 支援Miracast,再於樹莓派裝Miraclecast接收端,就能夠投影手機螢幕到樹莓派,也可以 播放音樂和影片。 https://github.com/albfan/miraclecast 除了Miracast以外,還有更老的「DLNA」技術,僅部份手機支援。樹莓派安裝 gmrender-resurrect作為接收端。 https://github.com/hzeller/gmrender-resurrect 小結,以上的方案都有各種問題。如果真的要不分Android手機廠牌,在樹莓派跑「 Scrcpy」或許是個解法,螢幕和聲音都能傳過去。 https://github.com/Genymobile/scrcpy 但是它的用法比較像是從電腦控制Android手機,而非從手機端投影到電腦。 https://i.imgur.com/eMH8zpH.jpg
Scrcpy要從手機配對很麻煩,或許可以拿KDE Connect作為中介,寫個script,遠端控制 樹莓派執行adb pair指令,讓樹莓派能自動與Android手機完成無線配對,再啟動Scrcpy Chromecast的應該是這個Shanocast: https://github.com/rgerganov/shanocast 另一個協定「Miracast」,這個只有部份Android手機支援(Google刻意讓Pixel不支援 Miracast,真的很壞,連帶影響到Sony Xperia),不是裝個APP就能解決的。如果有幸 支援Miracast,再於樹莓派裝Miraclecast接收端,就能夠投影手機螢幕到樹莓派,也可以 播放音樂和影片。 https://github.com/albfan/miraclecast 除了Miracast以外,還有更老的「DLNA」技術,僅部份手機支援。樹莓派安裝 gmrender-resurrect作為接收端。 https://github.com/hzeller/gmrender-resurrect 小結,以上的方案都有各種問題。如果真的要不分Android手機廠牌,在樹莓派跑「 Scrcpy」或許是個解法,螢幕和聲音都能傳過去。 https://github.com/Genymobile/scrcpy 但是它的用法比較像是從電腦控制Android手機,而非從手機端投影到電腦。 https://i.imgur.com/eMH8zpH.jpg
Scrcpy要從手機配對很麻煩,或許可以拿KDE Connect作為中介,寫個script,遠端控制 樹莓派執行adb pair指令,讓樹莓派能自動與Android手機完成無線配對,再啟動Scrcpy 視窗? 以上協定全都不要? 最後再看看主流協定以外的替代方案。 以前有個叫做Raspicast的專案,能將Android手機影片投放到樹莓派。可是技術太舊, 沒法更新了。 NymphCast為一套完整的解決方案,開放原始碼,目前已經能夠投放音樂和影片,尚提供 媒體伺服器的功能。 https://github.com/MayaPosch/NymphCast 無須特殊硬體,安裝APP便能投放,作者有寫一個參考實現客戶端,能用來播放音樂,並 且支援一對多。播放完畢視窗會自動關閉。 https://i.imgur.com/QyfmWz4.jpg
另一個是FCast,由FUTO組織所研發的協定,已經有接收端程式。配合他們家的GrayJay APP就能投放影片。GrayJay是將YouTube、Twitch、Oddysey整合在一起的大雜燴,算是異 色版NewPipe吧。可惜GrayJay是假開源APP。 https://grayjay.app/ ※ 文章網址: https://ptt.org.tw/MobileComm/M.1731148503.A.3E7
kpg0427 : 我總覺得好像看到關鍵字www11/09 18:37
WLR : 推技術文。想想好幾年沒用chromecast了11/09 18:42
abc0922001 : 酷11/09 18:42
abc0922001 : 我都用chromecast功能來看LINE TV 的中職比賽11/09 18:43
joexnozomi : 這台不是聽歌的嗎 哈哈 真厲害11/09 18:48
nimiq5566 : 投手機的不會有二次編碼問題嗎?11/09 19:29
democrat : 硬體成本太高且要額外的電費成本 沒什麼效益11/09 19:35
willy4907 : 推 之前買的pi4玩一陣子就冰好久了 找不到合適標的11/09 19:49
willy4907 : 用11/09 19:49
fangiyan : 還可以灌v2ray放家裡當跳板用11/09 19:55
xoy : 現在智慧電視這麼普及這需求就不高,用少人用的開11/09 20:01
xoy : 源軟體其實是另一種形式的被綁住,不一定方便,手11/09 20:01
xoy : 機跟電視或螢幕的長寬比例跟解析度也早就不一樣了11/09 20:01
xoy : 單純鏡射效果也不好11/09 20:01
shinmori : 樹梅的成本太高,不過有其他用途樹梅是很好用11/09 20:13
GentIe : 研究精神推推11/09 20:19
orange21 : 帥11/09 20:29
avans : 推diy過程說明!11/09 20:50
TRESS : 推 詳細技術解說11/09 20:57
k9120303 : scrcpy的客戶端我更推薦用Escrcpy11/09 21:12
k9120303 : 大推這篇專業文11/09 21:13
birdy590 : 太貴 有點本末倒置11/09 22:06
kimi112136 : 其實對岸一堆這種開發版,成本更便宜,但是最最便11/09 22:35
kimi112136 : 宜的是掏寶上的xx盒子,只是要會自己動手11/09 22:35
gxp : 對岸那種xx盒子都授權有問題, 遇到更新就會不能用11/09 22:51
Zein : 技術文 推推11/09 23:07
kimi112136 : 授權?都自己刷linux或是android了...啥授權問題?11/09 23:51
shter : 我的筆電投 miracast 到 Sony Bravia 不是很順暢11/10 00:06
Alllllogo : 推推!!11/10 01:12
superluminal: 強!11/10 01:15
dubudubu : 推11/10 01:35
dadanyellow : 酷 但還是花個2000元買Chromecast for TV更實際 11/10 03:55
mstar : 中間有段內容重複了 11/10 09:06
cmggq : 實驗文必推 11/10 09:24
ticy : 推 好文 11/10 11:18
velaro : 好文 11/10 12:33
birdy590 : 之前樹莓派缺貨的時候 不少廠商拿電視棒/盒的晶片 11/10 16:15
birdy590 : 來做單板... 但軟體成熟度差很多 就便宜湊和著用 11/10 16:15
birdy590 : 反向操作就沒道理了, 成本問題先不談, 水果和安卓 11/10 16:19
birdy590 : 螢幕投射都是封閉協議 像Airplay2除了有官方授權的 11/10 16:26
birdy590 : 透過逆向工程最多只能得到殘缺的支援 11/10 16:27
willsonlee : 我用不到 但推認真 11/10 17:29
a9202507 : 推認真文 11/10 17:36
goldie : 強!推 11/10 18:50
tcchu : 我是為了adb-sync排程跑adb connect 剛好就能scrcpy 11/10 20:27
tcchu : 不過adb有幾個坑要踩就是了 11/10 20:28
xoy : 當初AirPlay一代協定被部分逆向工程後,現在的開源 11/10 21:45
xoy : 軟體跟一狗票市售串流產品大都靠這個,但是正常的 11/10 21:45
xoy : 管道還是要跟蘋果談授權,跟谷歌一樣。也是有產品 11/10 21:45
xoy : 的AirPlay跟Chromecast都是花錢買授權做的 11/10 21:45
mihonisizumi: 推 11/10 22:05
Taichun318 : 推 11/10 23:06
p520888 : 推!正好我也想這樣用! 11/11 02:40
jacky81005 : 推 11/11 04:47