投屏软件的原理是什么?它为什么比用 adb 快许多?

2018-05-03 12:20:32 +08:00
 clouduan

我试过用 adb 操作手机截图和点击,延迟都挺大的,但是投屏软件的按键几乎可以实现实时响应。

我觉得投屏软件的底层实现应该还是用的 adb,但是它是如何做到那么快的呢?

或者其不是靠 adb 实现的,那它的原理是什么呢?

28573 次点击
所在节点    Android
31 条回复
zjb861107
2018-05-03 23:36:55 +08:00
minicap 了解一下
somebody
2018-05-04 01:03:29 +08:00
@gam2046 我试过荣耀 V10(API 26 ),小米 Note( API 23 ),没有问题

大概看了下 scrcpy 的实现,启动时 push 一个 apk 到手机的 /data/local/tmp/scrcpy-server.jar ,启动 com.genymobile.scrcpy.Server。

Server 反射调用隐藏的 android.view.SurfaceControl 类的方法,获取屏幕画面应该是 SurfaceControl.createDisplay/setDisplaySurface/setDisplayProjection 这一组方法。画面输出到 MediaCodec 提供的 Surface,Codec 使用 avc 编码后的视频流通过 socket 传输到 PC 端展示,PC 端使用 libsdl 作为 UI toolkit。所以并不是使用 adb 截屏或录屏
Bryan0Z
2018-05-04 01:10:10 +08:00
@blackbbc 学到了,一直用的 tc,原来还有更好的
tonyaiken
2018-05-04 08:26:06 +08:00
@somebody 谢谢分享,很好用
JJFJJ
2018-05-04 12:07:31 +08:00
@bfdh miracast
somebody
2018-05-04 12:26:11 +08:00
@somebody scrcpy 的作者详细说明了他的设计和实现,作者水平很高,代码质量也不错,scrcpy 是个很好的学习项目

https://github.com/Genymobile/scrcpy/blob/master/DEVELOP.md
clouduan
2018-05-04 15:36:13 +08:00
@somebody 感谢
ilovesusu
2018-08-24 10:42:02 +08:00
楼主最后的解决方案是啥?!
vtoexshan
2019-03-12 16:20:41 +08:00
scrcpy v1.8 死活下不了,求大婶帮忙
237852401
2019-03-17 18:25:42 +08:00
vtoexshan
2019-03-17 23:21:20 +08:00
@237852401 网速下不动 zip,浏览 github 页面还可以

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

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

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

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

© 2021 V2EX