jjzjj

Scrcpy远程控制Andorid手机

DYC1 2024-06-17 原文

        Scrcpy是免费的开源屏幕镜像应用程序,允许您在Windows、macOS或Linux桌面上控制Android设备。

github地址:https://github.com/Genymobile/scrcpy

系统要求

        Android设备必须至少支持API 21 (Android 5.0),确认设备已打开以进行ADB调试,某些设备还需要打开可通过鼠标和键盘控制的其他选项。

Linux

在debian(目前仅支持测试和sid季度)和Ubuntu (20.04)中:

Apt install scrcpy

还提供了快照包scrcpy。

为Fedora提供COPR软件包scrcpy。

为Arch Linux提供AUR软件包scrcpy。

向Gentoo提供Ebuild软件包scrcpy/。

Windows

Windows可以轻松地提供包含所有依赖项(包括ADB)的预编译包,自述文件中也提供了Chocolatey。

Choco install scrcpy

Choco install ADB #如果您还没有ADB

或Scoop:

Scoop install scrcpy

Scoop install ADB #如果您还没有ADB

[构建] [构建]也可以。

macOS

这个节目发表在Homebrew上。自己安装就可以了。

Brew install scrcpy

PATH内也必须有ADB。如果还没有:

# Homebrew=2.6.0

brew install-cask Android-platform-tools

# Homebrew 2.6.0

brew cask install Android-platform-tools

[构建] [构建]也可以。

运行

连接Android设备并执行以下操作:

Scrcpy

此程序支持命令行参数以查看参数列表。

Scr cpy-帮助

功能介绍

捕获设置

降低分辨率

在某些情况下,可以通过降低镜像分辨率来提高性能。

要将宽度和高度都限制为特定值(例如1024),请执行以下操作:

Scr cpy-max-size 1024

Scrcpy -m 1024 #缩写

另一侧按比例缩小,以保持设备显示比例。这样,分辨率为19201080的设备将镜像到分辨率为1024576。

修改码率

默认比特率为8Mbps。要更改视频的比特率(例如,更改为2Mbps):

Scr cpy-位-rate 2m

Scrcpy -b 2M #缩写

限制帧率

要限制捕获的帧速率,请执行以下操作:

Scr cpy-max-fps 15

此功能从Android 10开始正式提供,但在某些早期版本中提供。

画面裁剪

您可以剪切设备屏幕,只镜像屏幕的一部分。

例如,您只能镜像Oculus Go的一只眼睛。

Scrcpy-crop 1224: 1440: 0: 0 #原点为(0,0)的1224×1440像素

如果还指定了-max-size,则在缩放前进行修剪。

锁定屏幕方向

要锁定镜像屏幕的方向,请执行以下操作:

SCR cpy-lock-video-orientation 0 #自然方向

SCR cpy-lock-video-orientation 1 #逆时针旋转90度

SCR cpy-lock-video-orientation 2 # 180

SCR cpy-lock-video-orientation 3 #顺时针旋转90度

只影响录制方向,可以独立旋转窗。

编码器

有些设备内置了多个编码器,但有些编码器可能会引起问题或冲突。可以手动选择其他编码器。

SCR cpy-encode romx . qcom . video . encoder . AVC

要列出可用的编码器,可以指定包含所有编码器的不存在编码器名称。

Scrcpy-encoder _

屏幕录制

镜像过程中可以录制视频。

Scrcpy-record file.mp4

Scrcpy -r file.mkv

仅记录,不显示镜像:

SCR cpy-no-display-record file . MP 4

Scrcpy -Nr file.mkv

按# Ctrl C停止录制

由于性能原因,即使不实时显示,记录也包含“跳过的帧”。因为设备为每个帧设置时间戳,所以数据包延迟抖动不会影响记录的文件。

连接

无线

Scrcpy使用ADB与设备通信,ADB支持通过TCP/IP连接设备。

将设备和计算机连接到同一个Wi-Fi。

设置您可以打开手机状态信息、获取设备的IP地址或发出以下命令:

ADB shell IP route | awk ‘ { print $ 9 } ‘

启用设备的网络ADB功能ADB tcpip 5555。

断开设备的USB连接。

连接到设备:ADB connect DEVICE_IP:5555(将DEVICE_IP替换为设备IP)。

正常运行Scrcpy。

可能需要降低比特率和分辨率。

Scr cpy-bit-rate 2m-max-size 800

Scrcpy -b2M -m800 #缩写

多设备

如果Adb devices列出了多个设备,则必须指定设备的序列号。

Scrcpy-serial 0123456789abcdef

Scrcpy -s 0123456789abcdef #缩写

如果设备通过TCP/IP连接:

SCR cpy-串行192.168.0.1: 5555

Scrcpy -s 192.168.0.1:5555 #缩写

您可以同时启动多个scrcpy实例,同时显示多个设备的屏幕。

在设备连接时自动启动

使用AutoAdb,您可以:

auto ADB scrcpy-s“{ }”

SSH 隧道

要远程连接到设备,可以将本地ADB客户端连接到远程ADB服务器(两端需要相同版本的ADB协议)。

在Adb kill-server #本地5037端口上关闭Adb服务器

ssh-cn-l 5037:localhost:5037-r 27183:localhost:27183 your _ remote _ computer

#保持窗口打开

从另一个终端:

Scrcpy

如果不想使用远程端口转发,则可以强制正向连接(请参见-L和-R之间的差异)。

在Adb kill-server #本地5037端口上关闭Adb服务器

ssh-cn-l 5037:localhost:5037-l 27183:localhost:27183 your _ remote _ computer

#保持窗口打开

从另一个终端:

Scr cpy-force-ad b-forward

与无线网络连接一样,屏幕质量可能会下降。

Scr cpy-b2m-m800-max-fps15

窗口设置

标题

窗口标题默认为设备型号。可以使用以下命令进行修改:

Scr cpy-window-title’ my device ‘

位置和大小

可以指定初始窗口位置和大小。

SCR cpy-window-x 100-window-y 100-window-width 800-window-height 600

无边框

关闭边框:

Scr cpy-window-borderless

保持窗口在最前

可以使用以下命令将窗口置于最前面:

Scrcpy-always-on-top on-top

全屏

可以使用以下命令直接从全屏启动scrcpy:

Scrcpy-全屏

Scrcpy -f #缩写

全屏状态可以随时通过MOD f切换。

旋转

可以使用以下命令旋转窗口:

Scrcpy-rotation 1

可选择的值包括:

0:无旋转

1:逆时针旋转90度

2: 180转

3:顺时针旋转90度

可以随时使用MOD(左箭头)和MOD(右箭头)进行更改。

Scrcpy有三个方向。

MOD r请求设备在垂直屏幕和水平屏幕之间切换(如果前台应用程序不支持请求方向,则可以拒绝请求)。

更改-lock-lock-video-orientation镜像的方向(设备传输到计算机的屏幕方向)。这样会影响录音。

-“旋转”(或MOD/MOD)仅旋转窗口内容。只影响显示,不影响记录。

其他镜像设置

只读

禁用设备的计算机控制(例如,键盘输入、鼠标事件和文件拖放):

Scrcpy-no-control

Scrcpy -n

显示屏

如果设备有多个显示器,则可以选择要镜像的显示器。

Scr cpy-显示器1

可以使用以下命令列出所有显示的id:

在ADB shell dumpsysdisplay #输出中搜索“mDisplayId=”

要控制辅助显示,设备必须运行Android 10或更高版本。否则,镜像是只读的。

保持常亮

连接时防止设备休眠:

Scr cpy-stay-awake

Scrcpy -w

程序退出后,将恢复设备的原始设置。

关闭设备屏幕

您可以使用以下命令行参数在设备屏幕关闭的情况下进行镜像。

Scr cpy-turn-screen-off

Scrcpy -S

或者,随时按MOD o。

要重新打开屏幕,请选择mod shift O .

在Android系统中,电源按钮总是打开屏幕。为了方便起见,对于scrcpy中发生的电源事件(使用鼠标右键或MOD p),屏幕将在短暂延迟后关闭。设备上的电源按钮仍然可以打开设备屏幕。

同时,还可以防止设备休眠。

SCR cpy-turn-screen-off-stay-awake

Scrcpy -Sw

渲染过期帧

默认情况下,为了减少延迟,scrcpy始终渲染解码成功的最近一帧,并跳过上一帧。

强制渲染所有帧(延迟可能会很长):

Scr cpy-render-expired-frames

显示触摸

演示时,可能需要显示物理触摸点(物理设备上的触摸点)。

Android在开发者选项中提供了此功能。

Scrcpy在启动时打开此功能,并提供在关闭时恢复初始设置的选项。

Scr cpy-show-touches

Scrcpy -t

此功能只能显示物理触摸(在屏幕上用手指触摸)。

关闭屏保

默认情况下,Scrcpy不会阻止在计算机上打开的屏幕保护程序。

关闭屏幕保护程序:

Scr cpy-disable-screen saver

输入控制

旋转设备屏幕

使用MOD r在垂直和水平屏幕模式之间切换。

只有前台应用程序支持所需模式时,才会切换。

复制粘贴

只要Android的剪贴板发生变化,其内容就会自动同步到计算机的剪贴板上。

所有Ctrl快捷方式都将传递给设备。其中:

Ctrl c通常执行复制

Ctrl x通常执行剪切

Ctrl v通常执行粘贴(计算机到设备剪贴板同步完成后)

大多数情况下,这些键执行这些功能。

但是,实际行为取决于设备的前台程序。例如,Termux在按Ctrl c时发送SIGINT,K-9 Mail发送新邮件。

在这种情况下,要剪切,请复制并粘贴(仅支持Android=7)。

MOD c注入COPY(复制)

MOD x注入CUT(剪切)

MOD v注入PASTE(粘贴) (计算机到设备剪贴板同步完成后)

MOD Shift v还将计算机剪贴板的内容转换为输入到设备中的一系列击键事件。如果应用程序(如Termux)不允许粘贴,则此功能非常有用。但是,使用此功能可能会导致非ASCII编码内容出错。

警告:计算机剪贴板的内容粘贴到设备上时(通过Ctrl v或MOD v),内容将复制到设备的剪贴板上。这样可以读取所有Android应用程序。要避免以这种方式粘贴密码等敏感内容。

有些设备不支持通过程序设置剪贴板。-legacy-paste选项允许您修改Ctrl v和MOD v的工作方式,以便通过按键事件(如MOD Shift v)注入计算机剪贴板内容。

双指缩放

模拟两个手指的缩放。按住Ctrl键并移动鼠标。

更准确地说,按住Ctrl键的同时按住鼠标左键。在释放鼠标左键之前,所有鼠标移动都将围绕屏幕中心缩放或旋转内容(如果应用了支持)。

实际上,scrcpy会在相对于屏幕中心对称的位置生成“虚拟手指”上发生的其他触摸事件。

文字注入偏好

打字时,系统生成两个事件。

按键事件表示按键被按下或释放。

表示输入了一个字符的文本事件。

默认情况下,程序使用按键事件输入字符。只有这样,键盘才能在游戏中正常工作(例如WASD键)。

但是,这也可能引起一些问题。如果出现问题,可以通过以下方法避免:

Scr cpy-prefer-text

(这可能会导致键盘在游戏中无法正常工作。)。

按键重复

默认情况下,按住一个键会生成多个重复的关键点事件。某些游戏可能会出现性能问题。

防止重复按键事件传递:

Scr cpy-no-key-repeat

右键和中键

默认情况下,右键单击将触发返回键(或电源键),按中键将触发HOME键。要禁用这些快捷键并将所有单击传递到设备,请:

Scr cpy-forward-all-clicks

文件拖放

安装APK

APK文件(文件名为.以apk结尾)拖放到scrcpy窗口中进行安装。

此作业在屏幕上保持不变,并向控制台输出日志。

将文件推送至设备

要将文件推送到设备上的/sdcard/,请将非APK文件拖放到scrcpy窗口中。

此操作没有可视响应,仅从控制台输出日志。

启动时可以修改大象目录。

Scr cpy-push-target/SD卡/foo/bar/

音频转发

Scrcpy不支持音频使用Sndcpy

快捷键

在以下列表中,MOD是快捷键的修饰键。

默认值为(左)Alt或(左)Super。

可以使用-shortcut-mod进行修改。可选键包括lctrl、rctrl、lalt、ralt、lsuper和rsuper。例如:

#使用右侧的Ctrl键

Scr cpy-shortcut-mod=r ctrl

#左Ctrl键左Alt键或Super键

Scr cpy-shortcut-mod=l ctrl lalt,l super

Super键通常表示Windows或Cmd键。

操作

键盘快捷键

全屏

MOD f

把屏幕向左转动

MOD(向左箭头)

把屏幕向右转动

MOD(右箭头)

将窗口大小重置为1:1(像素匹配)

MOD g

重置窗口大小以移除黑色边

MOD w |双击

单击“主页”屏幕

MOD h |鼠标中键

单击以返回

MOD b |右键单击

单击“切换”以应用

MOD s

单击菜单(解锁屏幕)

MOD m

按音量

MOD(向上箭头)

单击卷-

MOD(向下箭头)

单击电源

MOD p

打开屏幕

单击鼠标右键

关闭设备屏幕(仍在计算机上显示)

MOD o

打开设备屏幕

MOD Shift o

旋转设备屏幕

MOD r

展开通知面板

MOD n

折叠通知面板

MOD Shift n

复制到剪贴板

MOD c

剪切到剪贴板

MOD x

同步和粘贴剪贴板

MOD v

计算机剪贴板文本注入

MOD Shift v

打开/关闭FPS显示(在stdout中)

MOD I

缩放。

按住Ctrl键并移动鼠标

通过双击黑色边,可以删除黑色边。右键单击将在屏幕关闭时打开屏幕,其馀部分被认为是按返回键。需要Android版本Android=7。

所有Ctrl键的快捷键都将传递给设备,因此在当前应用程序中处理。

自定义路径

要使用指定的ADB二进制文件,可以设置ADB环境变量。

ADB=/path/to/adb scrcpy

要更改Scrcpy-server的路径,请设置SCRCPY_SERVER_PATH。

Linux

Android 1

远程控制

Windows

有关Scrcpy远程控制Andorid手机的更多相关文章

  1. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  2. ruby-on-rails - 带 Spring 锁的 Rails 4 控制台 - 2

    我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.

  3. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  4. 怎样用一台手机做自媒体? - 2

    其实做自媒体的成本并不高,入门只需要一部手机即可!在手机上找视频素材、使用手机剪辑视频、最后使用手机发布视频作品获得收益!方法并不难,今天这期内容就来给粉丝们分享一种小方法,每天稳定收益100-300,抓紧点赞收藏!1、找素材(1)使用手机拍摄自己喜欢的经典段落,使用程序把文案内容提取出来(2)也可以在豆瓣、知乎、微博等网站中找一些自己需要的文案素材(3)把文案进行润色修改,可以加入一些自己的观点(4)视频素材可以使用软件中自带的素材,也可以在素材网站中下载完整版的素材2、文案配音(1)把复制好的文案直接导入小程序中(2)调整音色、音调后一键合成音频即可(3)可以选择自己朗读配音,需要花一点时

  5. C51单片机——实现用独立按键控制LED亮灭(调用函数篇) - 2

    说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时

  6. ruby-on-rails - 在 Rails 控制台中使用 asset_path - 2

    在我的Character模型中,我添加了:字符.rbbefore_savedoself.profile_picture_url=asset_path('icon.png')end但是,对于数据库中已存在的所有角色,它们的profile_picture_url为nil。因此,我想进入控制台并遍历所有这些并进行设置。在我试过的控制台中:Character.find_eachdo|c|c.profile_picture_url=asset_path('icon.png')end但这给出了错误:NoMethodError:undefinedmethod`asset_path'formain:O

  7. ruby-on-rails - 带有 Pry 的 Rails 控制台 - 2

    当我进入Rails控制台时,我已将pry设置为加载代替irb。我找不到该页面或不记得如何将其恢复为默认行为,因为它似乎干扰了我的Rubymine调试器。有什么建议吗? 最佳答案 我刚发现问题,pry-railsgem。忘记了它的目的是让“railsconsole”打开pry。 关于ruby-on-rails-带有Pry的Rails控制台,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

  8. ruby - 将全局 $stdout 重新分配给控制台 - ruby - 2

    我正在尝试将$stdout设置为临时写入一个文件,然后返回到一个文件。test.rb:old_stdout=$stdout$stdout.reopen("mytestfile.out",'w+')puts"thisgoesinmytestfile"$stdout=old_stdoutputs"thisshouldbeontheconsole"$stdout.reopen("mytestfile1.out",'w+')puts"thisgoesinmytestfile1:"$stdout=old_stdoutputs"thisshouldbebackontheconsole"这是输出。r

  9. ruby-on-rails - Ruby 流量控制 : throw an exception, 返回 nil 还是让它失败? - 2

    我在思考流量控制的最佳实践。我应该走哪条路?1)不要检查任何东西并让程序失败(更清晰的代码,自然的错误消息):defself.fetch(feed_id)feed=Feed.find(feed_id)feed.fetchend2)通过返回nil静默失败(但是,“CleanCode”说,你永远不应该返回null):defself.fetch(feed_id)returnunlessfeed_idfeed=Feed.find(feed_id)returnunlessfeedfeed.fetchend3)抛出异常(因为不按id查找feed是异常的):defself.fetch(feed_id

  10. ruby-on-rails - ruby 新手,有人可以帮我从控制台破译这个错误吗? - 2

    我真的只是不确定这意味着什么或我应该做什么才能让网页在我的本地主机上运行。现在它只是显示一个错误,上面写着“我们很抱歉,但出了点问题。”当我运行railsserver并在chrome中打开localhost:3000时。这是控制台输出:StartedGET"/users/sign_in"for127.0.0.1at2013-07-0512:07:07-0400ProcessingbyDevise::SessionsController#newasHTMLCompleted500InternalServerErrorin55msNoMethodError(undefinedmethod`

随机推荐