WhyCan Forum

本站无需注册,无需积分,无需回复可下载所有资料,如果真的喜欢小站,请您注册之后请至少回复一个帖子激活Id,谢谢支持! 站长QQ: 516333132 (挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2019-08-02 21:34:39

checkout
会员
注册时间: 2018-11-09
累计积分: 47

投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

本帖子旨在分享本人之前在荔枝派zero板子上移植的投屏软件:scrcpy。
scrcpy投屏的分辨率与流畅度受限于两个方面:1.图形渲染  2.解码(h264)
源项目简介:https://github.com/Genymobile/scrcpy.git
大致原理:scrcpy使用adb push一个jar包到Android手机,手机作为server抓取手机屏幕并编码压缩,开发板作为client通过adb连接server;开发板接受到h264码流后解码、渲染显示。此外,client端还可以接受本地键盘和鼠标命令控制Android手机。
硬件验证:licheepi zero开发板
软件:解码与渲染都是软件方式,效果不必期待会有多好。不过,可以拿到有GPU的树莓派上跑,效果应该不错。
scrcpy需要用到adb(不是adbd!!!,所以,你懂的:p要先移植它

先立贴,放放视频,看看是啥东东:

最近编辑记录 checkout (2019-08-02 21:36:25)

离线

#2 2019-08-02 23:15:49

达克罗德
会员
注册时间: 2018-04-10
累计积分: 538

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

牛!

离线

#3 2019-08-02 23:40:18

jimmy
Moderator
注册时间: 2017-10-29
累计积分: 154

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

牛叉牛叉, V3s USB 是不是要把  adb 协议弄进去, 让 V3s 做 adb 客户端, 相当于 windows 的 adb shell ?

离线

#4 2019-08-03 09:46:42

dgtg
会员
注册时间: 2017-11-08
累计积分: 109

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

牛得一塌糊涂!
是不是也可以用wifi来搞?类似wifi display那样...

离线

#5 2019-08-06 08:54:59

Jmhh247
会员
注册时间: 2018-12-21
累计积分: 98

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

这个很好玩啊,学习了

离线

#6 2019-08-06 10:49:45

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 7,180

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

Linux 下编译方法:
https://github.com/Genymobile/scrcpy/blob/master/BUILD.md#prebuilt-server


2019-08-06_104601.png

adb -L tcp:5037 fork-server server --reply-fd 268

adb shell CLASSPATH=/data/local/tmp/scrcpy-server.jar app_process / com.genymobile.scrcpy.Server 0 8000000 false - true true

试了一下 scrcpy Windows 64bit 版本,小巧极速, 此处下载 scrcpy-win64-v1.10.zip

貌似通过 adb 注入一个 jar文件在 android 上面跑, 执行 h.264 codec 编码,
然后电脑使用 adb 接收,并 h.264 解码?

离线

#7 2019-08-06 18:51:23

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 7,180

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

QQ20190806185008.png

QQ20190806185703.png

按照 Linux 下编译方法:
https://github.com/Genymobile/scrcpy/blob/master/BUILD.md#prebuilt-server

Ubuntu 18.04 运行成功.

离线

#8 2019-08-21 09:28:11

firstman
会员
注册时间: 2019-04-06
累计积分: 125

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

楼主大神, 我还是接着到这里来问你合适一点

https://whycan.cn/t_2760.html#p22646

checkout 说:

你首先要分清adb和adbd的区别。adbd是手机里面跑的那种,需要支持gadget,adb是主机模式下跑的,用来连接手机

firstman 说:

https://whycan.cn/files/members/1574/QQ20190820223450.png

弄了一个 adb 执行程序进去, 然而, 并不能连到我的小米手机.

总觉得还有一个协议没有勾选.

如果我的 f1c100s 里面跑一个 adb, 用来连接手机(手机里面应该跑的是 adbd???)
我需要做哪些操作, 需要在 make menuconfig 里面勾选什么协议吗?

离线

#9 2019-08-21 09:49:29

checkout
会员
注册时间: 2018-11-09
累计积分: 47

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

用来连接手机的话,只需要支持USB host模式就行,不需要修改其他东东。插上手机,运行adb,再执行adb devices可以看正不正常

firstman 说:

楼主大神, 我还是接着到这里来问你合适一点

https://whycan.cn/t_2760.html#p22646

checkout 说:

你首先要分清adb和adbd的区别。adbd是手机里面跑的那种,需要支持gadget,adb是主机模式下跑的,用来连接手机

firstman 说:

https://whycan.cn/files/members/1574/QQ20190820223450.png

弄了一个 adb 执行程序进去, 然而, 并不能连到我的小米手机.

总觉得还有一个协议没有勾选.

如果我的 f1c100s 里面跑一个 adb, 用来连接手机(手机里面应该跑的是 adbd???)
我需要做哪些操作, 需要在 make menuconfig 里面勾选什么协议吗?

离线

#10 2019-08-21 10:22:18

超级萌新
会员
注册时间: 2018-05-04
累计积分: 255

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

翻了一下 adb 代码,使用了 libusb,这样在应用层直接驱动了,看起来不需要添加什么协议了,刚刚试了一下f1c100s 插我的手机,居然usb出错。


[  504.633108] usb 1-1: new high-speed USB device number 6 using musb-hdrc
[  505.223109] usb 1-1: device not accepting address 6, error -71
[  505.373116] usb 1-1: new high-speed USB device number 7 using musb-hdrc
[  505.523120] usb 1-1: device descriptor read/64, error -71
[  505.793094] usb 1-1: device descriptor read/64, error -71
[  505.913234] usb usb1-port1: attempt power cycle
[  506.403107] usb 1-1: new high-speed USB device number 8 using musb-hdrc
[  506.843098] usb 1-1: device not accepting address 8, error -71
[  506.993120] usb 1-1: new high-speed USB device number 9 using musb-hdrc
[  507.433081] usb 1-1: device not accepting address 9, error -71
[  507.439082] usb usb1-port1: unable to enumerate USB device

回去换条线或者换个手机试一试。

离线

#11 2019-08-21 12:19:36

超级萌新
会员
注册时间: 2018-05-04
累计积分: 255

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

# 
# 
# [   97.063258] usb 1-1: new high-speed USB device number 4 using musb-hdrc

# lsusb
Bus 001 Device 001: ID 1d6b:0002
Bus 001 Device 004: ID 2717:ff08
# 
# 
# adb devices
List of devices attached 

# 

换了一条线 USB 连接貌似可以了, 但是 adb devices 什么都没有  ;(

离线

#12 2019-08-21 12:33:11

checkout
会员
注册时间: 2018-11-09
累计积分: 47

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

手机开调试模式了没?

超级萌新 说:
# 
# 
# [   97.063258] usb 1-1: new high-speed USB device number 4 using musb-hdrc

# lsusb
Bus 001 Device 001: ID 1d6b:0002
Bus 001 Device 004: ID 2717:ff08
# 
# 
# adb devices
List of devices attached 

# 

换了一条线 USB 连接貌似可以了, 但是 adb devices 什么都没有  ;(

离线

#13 2019-08-21 13:34:01

超级萌新
会员
注册时间: 2018-05-04
累计积分: 255

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

开了, 这个手机在 Windows 和 虚拟机Ubuntu 的 adb shell 都正常。

两个手机MI5/RedMI Note7, 两根原装的USB线, 都是一模一样的情况,

lsusb 都可以显示USB设备,内核也没有报错误,就是 adb devices 啥也没有。

最近编辑记录 超级萌新 (2019-08-21 13:55:56)

离线

#14 2019-08-21 14:18:34

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 7,180

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

超级萌新 说:

开了, 这个手机在 Windows 和 虚拟机Ubuntu 的 adb shell 都正常。

两个手机MI5/RedMI Note7, 两根原装的USB线, 都是一模一样的情况,

lsusb 都可以显示USB设备,内核也没有报错误,就是 adb devices 啥也没有。

翻了一下邮箱, 我当时搞君正X1000, 参考这篇文章, 可以搞定,
https://blog.csdn.net/u010340178/article/details/72726205

首先检查 adb 相关文件:

# find / |grep adb
/tmp/adb.log
/usr/bin/adbd
/usr/bin/adb
/root/.android/adbkey.pub
/root/.android/adbkey

然后建立 /root/.android/adb_usb.ini
文件的内容是你的USB VID

0x2717

然后先kill server, 然后就正常了:

adb kill-server
adb devices
adb shell

离线

#15 2019-08-21 14:21:36

超级萌新
会员
注册时间: 2018-05-04
累计积分: 255

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

2019-08-21_142007.png

感谢 @晕哥 @checkout

终于搞定了, 今天终于可以早点下班了 ^_^

离线

#16 2019-08-21 16:56:10

九霄云外
会员
注册时间: 2019-01-09
累计积分: 44

Re: 投屏软件scrcpy在Linux上的移植(porting scrcpy to linux)

mark, 牛逼


全志芯片供应、方案开发、技术支持 QQ:610943940

离线

页脚