请教大家一个问题, Android 如何投屏到浏览器,可通过同一局域网的浏览器访问投屏内容并可以反向控制

2020-12-09 16:07:24 +08:00
 wssy921

需求是这样的,andrioid 端的 app 点击开始投屏,然后同一局域网,或者连接手机热点的笔记本,可以通过访问 app 开启的 server 的服务去访问, 例如 192.168.10.11:5555 这样可以访问到投屏内容,并且可以反向控制。

因为之前对 android 和投屏相关的技术和协议没什么研究,不知道应该选用什么技术栈。 大概去 github 搜了下,有使用 cling, webrtc 等技术的,还有直接使用 DLAN,Miracast 等协议进行开发的。 但是因为不太确定终端是否能支持 DLAN, Miracast 等协议。 所以想用浏览器来接收,有没有大佬可以介绍一下相关的技术方向。

2326 次点击
所在节点    程序员
5 条回复
narmgalaxy
2020-12-09 16:20:06 +08:00
你可以研究一下 scrcpy
mgrddsj
2020-12-09 19:07:59 +08:00
楼上提到的 scrcpy 是通过 ADB 来传输的(要么有线,要么开启无线 ADB,得在电脑上装 ADB,而且目前没有在浏览器跑的方案。),好处是可以在电脑上控制手机。

我用过最接近楼主描述的是 Screen Stream over HTTP ( https://play.google.com/store/apps/details?id=info.dvkr.screenstream )(GitHub: https://github.com/dkrivoruchko/ScreenStream )。这个 app 可以实现通过浏览器串流手机屏幕内容。用的是 MJPEG 。不过它目前还不支持电脑控制手机。不过既然是开源的,应该可以用 Android 7.0+ 的无障碍服务来实现模拟点击。

不过以上两者都不支持声音传输。如果要传输设备音频,可以尝试自己实现。Android 端需要 Android 10+,原理参考 sndcpy ( https://github.com/rom1v/sndcpy )。

而 Miracast 的话,则对发送、接收双端都有硬件要求。Android 4.4 - Android 5.1 都自带 Miracast 支持( Google 在 Android 6.0 的源码里面移除了它,但是部分国内厂商依然在他们的定制 ROM 里面保留了这个功能)一般只要支持 WiFi 的 Android 机的硬件都可以支持 Miracast 。而 PC 端的话,Windows 10 自带 Miracast 接收器 app “连接”。但是部分 WiFi 网卡不支持它,你可以在系统设置-系统-投影到此电脑里面打开接收功能。但需要注意的是,Win 10 自带这个接收器有个长久没修的 bug,“请求投影到此电脑”和“要求 PIN”必须设置为“每次”才能正常连接使用。Miracast 本身应该是支持在接收端控制发送端的,但是我实际经验上 Android 投屏到 Windows 时没有成功远程控制过。Miracast 的好处是支持 Android 设备音频串流。

DLNA 是投视频 /图片 /音频的协议,不适合屏幕镜像。
ChenXuting
2020-12-09 23:29:12 +08:00
酷安“文件闪送”,实现了除控制以外的功能。
ChenXuting
2020-12-09 23:30:07 +08:00
wssy921
2020-12-10 10:21:49 +08:00
@mgrddsj 解释的很想写,学到了很多。 不过感觉这样实现下来,代价还是比较大。 我继续研究一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/733797

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX