作者ivon852 (内容农场杀手)
看板MobileComm
标题[讨论] 用树莓派自干Chromecast替代品
时间Sat Nov 9 18:34:45 2024
将树莓派改造为串流装置,从手机投放的多媒体到树莓派播放,最好连手机萤幕也能一并
镜射上去。
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://webptt.com/cn.aspx?n=bbs/MobileComm/M.1731148503.A.3E7.html
1F:推 kpg0427 : 我总觉得好像看到关键字www11/09 18:37
2F:推 WLR : 推技术文。想想好几年没用chromecast了11/09 18:42
3F:推 abc0922001 : 酷11/09 18:42
4F:→ abc0922001 : 我都用chromecast功能来看LINE TV 的中职比赛11/09 18:43
5F:推 joexnozomi : 这台不是听歌的吗 哈哈 真厉害11/09 18:48
6F:推 nimiq5566 : 投手机的不会有二次编码问题吗?11/09 19:29
7F:推 democrat : 硬体成本太高且要额外的电费成本 没什麽效益11/09 19:35
8F:推 willy4907 : 推 之前买的pi4玩一阵子就冰好久了 找不到合适标的11/09 19:49
9F:→ willy4907 : 用11/09 19:49
10F:推 fangiyan : 还可以灌v2ray放家里当跳板用11/09 19:55
11F:推 xoy : 现在智慧电视这麽普及这需求就不高,用少人用的开11/09 20:01
12F:→ xoy : 源软体其实是另一种形式的被绑住,不一定方便,手11/09 20:01
13F:→ xoy : 机跟电视或萤幕的长宽比例跟解析度也早就不一样了11/09 20:01
14F:→ xoy : 单纯镜射效果也不好11/09 20:01
是的,这些方案可能只适合特殊用途。萤幕不一样的问题Android可以用SecondScreen改
推
shinmori : 要便宜原厂认证airplay的话,去买一台roku电视棒 11/09 20:12
其实我是幻想树莓派一台打全部啦,但看来除了Uxplay以外的投放服务都不好用
15F:→ shinmori : 树梅的成本太高,不过有其他用途树梅是很好用11/09 20:13
16F:推 GentIe : 研究精神推推11/09 20:19
17F:推 orange21 : 帅11/09 20:29
18F:推 avans : 推diy过程说明!11/09 20:50
19F:推 TRESS : 推 详细技术解说11/09 20:57
20F:推 k9120303 : scrcpy的客户端我更推荐用Escrcpy11/09 21:12
21F:→ k9120303 : 大推这篇专业文11/09 21:13
22F:→ birdy590 : 太贵 有点本末倒置11/09 22:06
※ 编辑: ivon852 (223.139.134.238 台湾), 11/09/2024 22:23:08
23F:→ kimi112136 : 其实对岸一堆这种开发版,成本更便宜,但是最最便11/09 22:35
24F:→ kimi112136 : 宜的是掏宝上的xx盒子,只是要会自己动手11/09 22:35
25F:→ gxp : 对岸那种xx盒子都授权有问题, 遇到更新就会不能用11/09 22:51
26F:推 Zein : 技术文 推推11/09 23:07
27F:→ kimi112136 : 授权?都自己刷linux或是android了...啥授权问题?11/09 23:51
Chromecast功能要授权吧,即使树莓派能刷Android TV也没办法直接用Chromecast
28F:推 shter : 我的笔电投 miracast 到 Sony Bravia 不是很顺畅11/10 00:06
29F:推 Alllllogo : 推推!!11/10 01:12
30F:推 superluminal: 强!11/10 01:15
31F:推 dubudubu : 推11/10 01:35
※ 编辑: ivon852 (223.139.134.238 台湾), 11/10/2024 01:54:40
32F:→ dadanyellow : 酷 但还是花个2000元买Chromecast for TV更实际 11/10 03:55
33F:推 mstar : 中间有段内容重复了 11/10 09:06
34F:推 cmggq : 实验文必推 11/10 09:24
35F:推 ticy : 推 好文 11/10 11:18
36F:推 velaro : 好文 11/10 12:33
37F:推 birdy590 : 之前树莓派缺货的时候 不少厂商拿电视棒/盒的晶片 11/10 16:15
38F:→ birdy590 : 来做单板... 但软体成熟度差很多 就便宜凑和着用 11/10 16:15
39F:→ birdy590 : 反向操作就没道理了, 成本问题先不谈, 水果和安卓 11/10 16:19
40F:→ birdy590 : 萤幕投射都是封闭协议 像Airplay2除了有官方授权的 11/10 16:26
41F:→ birdy590 : 透过逆向工程最多只能得到残缺的支援 11/10 16:27
42F:推 willsonlee : 我用不到 但推认真 11/10 17:29
43F:推 a9202507 : 推认真文 11/10 17:36
44F:推 goldie : 强!推 11/10 18:50
45F:推 tcchu : 我是为了adb-sync排程跑adb connect 刚好就能scrcpy 11/10 20:27
46F:→ tcchu : 不过adb有几个坑要踩就是了 11/10 20:28
47F:推 xoy : 当初AirPlay一代协定被部分逆向工程後,现在的开源 11/10 21:45
48F:→ xoy : 软体跟一狗票市售串流产品大都靠这个,但是正常的 11/10 21:45
49F:→ xoy : 管道还是要跟苹果谈授权,跟谷歌一样。也是有产品 11/10 21:45
50F:→ xoy : 的AirPlay跟Chromecast都是花钱买授权做的 11/10 21:45
51F:推 mihonisizumi: 推 11/10 22:05
52F:推 Taichun318 : 推 11/10 23:06
53F:推 p520888 : 推!正好我也想这样用! 11/11 02:40
54F:推 jacky81005 : 推 11/11 04:47
55F:推 stark5566 : 推,你的文章都很棒 11/13 01:59