欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

全面掌握安卓手机投屏与游戏利器Scrcpy:终极命令行操作指南

最编程 2024-02-05 20:29:07
...

Scrcpy是一款运行于PC的投屏软件,通过USB或TCP/IP网络连接安卓设备,能用PC的键盘和鼠标操作设备,实现多媒体播放,会议演示、音视频的录制、玩游戏、文件传输、远程技术支持等功能。软件支持自动横竖屏,延迟小画质高。

由于并非是安卓虚拟机,所以不存在性能损失。投屏画面默认以H.264视频流输出至电脑(可自定义视频编码),再加上延迟小,这就可以将PC的大显示器作为手机的延申了,即可用于娱乐,也可当作生产力工具。

最关键的是,实现这一切无需ROOT,也不会在设备上安装任何软件、堪称好玩办公神器。

安卓手机投屏与游戏神器Scrcpy一站全懂——最详细命令行教程_手机投屏电脑

Scrcpy 支持 Windows,Linux 和 macOS。

官方下载:GitHub - Genymobile/scrcpy: Display and control your Android device

国内下载:Scrcpy-win32/64-v2.3.1

QtScrcpy 国内下载:QtScrcpy 2.1.2

网上的Scrcpy的教程很多,笔者把 Scrcpy 的英文官方手册和命令行的帮助文档全部翻译成了中文,力争写出一篇最懵逼最详细的中文命令行用法手册。

本文会随着 Scrcpy 版本的更新而同步更新。目前的版本号为2.3.1,更新于2023年12月。


Scrcpy的特性:

● 轻量级:原生代码、仅在PC上显示安卓设备的屏幕

● 性能:30~120fps,取决于设备

● 图像质量:分辨率1920×1080或更高

● 低延迟:35~70ms

● 启动时间短:最快1 秒内即可显示第一帧

● 非侵入性:不会在安卓设备上安装任何程序

● 用户权益:无账号,无广告,无需联网

● *:免费和开源软件

Scrcpy的功能:

● 将Android 设备的音频转发到电脑(Android 11+)

● 在电脑上录制Android 设备的图像和声音

● 在Android 设备屏幕关闭的情况下镜像(投屏)到PC

● 双向复制粘贴

● 可配置的音频和视频质量

● 可镜像设备的摄像头(Android 版本 12+)

● Android 设备屏幕作为网络摄像头(V4L2)(仅限 Linux)

● 物理键盘/鼠标模拟 HID

● OTG 模式

● 以及更多......

运行Scrcpy的先决条件:

● Android 设备至少需要 API 21 (Android 5.0)。

● 音频转发需要 API >= 30 (Android 11+)。

● 确保你的设备打开了“USB调试“,如果存在还要启用“USB调试(安全设置)”。

● 在OTG模式下运行Scrcpy不需要打开USB调试。


Scrcpy用户手册


-------- 连接 --------


可以使用 USB 线缆有线连接设备,也可以通过 WIFI无线连接设备。

名词解释如无特指,以下的“设备”均是指 Android 设备,比如手机和平板。

USB 有线连接手机/平板的准备工作

1、打开“USB调试”,不同的手机位置不同。比如华为是点击设置→系统→关于手机→在“版本号”上连续点击7次,再进入设置→系统→开发人员选项,打开“USB调试”和“仅充电模式下允许ADB调试”。如果存在“USB调试(安全设置)”也要打开。

安卓手机投屏与游戏神器Scrcpy一站全懂——最详细命令行教程_手机投屏电脑_02

2、用USB线连接设备和电脑,如果设备弹出“是否允许USB调试”对话框,勾选“始终允许”,“确定”。

安卓手机投屏与游戏神器Scrcpy一站全懂——最详细命令行教程_手机投屏电脑_03

3、在手机弹出框中选择“传输照片”或“传输文件”。

安卓手机投屏与游戏神器Scrcpy一站全懂——最详细命令行教程_Scrcpy命令行用法_04

4、进入设备管理器,确保在 Android Phone(也可能叫“便携设备”)之下的 ADB 设备正常无问号。否则需要想办法打上驱动。对于华为手机,可以安装手机助手HiSuite。

安卓手机投屏与游戏神器Scrcpy一站全懂——最详细命令行教程_手机投屏电脑_05

选择设备

如果电脑只连接了一台设备,不带参数运行 scrcpy 会将该设备投屏(也称镜像)到电脑:

scrcpy

但若电脑连接了多个设备(比如1个手机和1个平板),则必须用以下4种方式之一指定要投屏(或进行其它操作)的设备:

1、通过设备的序列号

运行 adb devices 可查看设备的UUID;加参数 -l (小写的 L)可列出设备型号。例如:

安卓手机投屏与游戏神器Scrcpy一站全懂——最详细命令行教程_手机投屏电视_06

可见当前有2个设备连接在电脑上,用参数 --serial 指定设备进行连接可以打开多个设备的镜像。

scrcpy --serial=TESTID-Mi999     # 镜像序列号是TESTID-Mi999的设备

scrcpy -s TESTID-Mi999   # 简写

#若要同时镜像多个设备的画面,需要启动多个Scrcpy实例。下例镜像另一台设备0123456789,加上之前镜像的TESTID-Mi999,2个手机窗口会出现在电脑桌面上:

scrcpy --s=0123456789 

#如果通过 TCP/IP 连接,serial(序列号)的写法是 ip:port

scrcpy --serial=192.168.1.1:5555

后文会学到很多参数,如果连接了多个设备,这些参数前面都要加上 -s 以指定其中一个设备,之后的学习心里都要有这个谱。比如旋转屏幕命令,紫色参数指定了设备,红色参数旋转屏幕:

scrcpy -s TESTID-Mi999  --lock-video-orientation=0

另外,由于一台设备可以同时通过有线USB和无线IP网络2种方式连接至电脑,所以1台手机可以同时投屏到2台电脑。

2、通过USB自动连接,前提是只连接了一台USB设备:

scrcpy --select-usb  #自动选择USB设备

scrcpy -d   # 简写

3、通过TCP/IP自动连接,前提是只连接了一台TCP/IP设备:

scrcpy --select-tcpip  #自动选择TCP/IP设备

scrcpy -e   # 简写

4、连接指定地址的TCP/IP设备(需要先打开设备的TCP监听端口,详见下文“TCP/IP 无线投屏“)

scrcpy --tcpip=192.168.1.1:5555

scrcpy --tcpip=192.168.1.1   # 默认端口是5555

serial 也可以由环境变量提供(也由 adb 使用):

# in bash
export ANDROID_SERIAL=TESTID-Mi999
scrcpy
:: in cmd
set ANDROID_SERIAL=0123456789abcdef
scrcpy
# in PowerShell
$env:ANDROID_SERIAL = '0123456789abcdef'
scrcpy

TCP/IP(无线投屏/无线连接设备):

Scrcpy 依靠 adb 与设备通信,而 adb 支持通过TCP/IP网络(有线或无线)与设备连接,所以 Scrcpy 获得了无线连接能力。

无线连接安卓手机/平板的准备工作

设备必须与电脑连接在同一网络上,也就是手机与电脑处于同一网段,不能跨路由器。

执行以下步骤手动启用TCP/IP连接:

1、走完上文的“USB 有线连接手机/平板的准备工作”。

2、将设备插入电脑上的 USB 端口。

3、将设备连接到与电脑相同的 Wi-Fi 网络。

4、找到设备的IP地址。不同的设备获取路径不同。比如华为手机在设置→系统→关于手机→状态消息。也可以运行命令:

    adb shell ip route | awk '{print $9}'

    若在 Windows下运行:

    adb kill-server

    adb shell ip route     # 设备地址是192.168.89.101

安卓手机投屏与游戏神器Scrcpy一站全懂——最详细命令行教程_手机投屏电视_07

5、在你的设备上打开TCP 5555端口

     adb tcpip 5555

6、拔下设备的数据线

手动连接

在经过准备工作之后,设备已经监听端口,此时可手动无线连接到设备:

1、用IP地址无线连接到设备

     adb connect 192.168.89.101:5555

2、运行 scrcpy 投屏

3、结束时关闭连接:adb disconnec

4、如果与设备的连接断开(比如设备锁屏就断开):

  • 确保主机仍与 Android 设备连接到同一 Wi-Fi 网络。
  • 再次执行 adb connect 重新连接。
  • 如果仍然无法解决问题,运行adb kill-server 重置你的主机,再从头开始操作。

自动连接

当设备(例如 192.168.1.1)已监听用于传入 adb 连接的端口(通常为 5555),之后运行:

scrcpy --tcpip=192.168.1.1       # 默认端口是 5555

scrcpy --tcpip=192.168.1.1:5555

如果你不知道IP地址,或设备禁用了adb TCP/IP模式,解决方法是先通过USB连接设备,再运行:

scrcpy --tcpip   # 不带参数

这会自动找到设备的 IP 地址和 adb 端口,启用 TCP/IP 模式(如果有必要),然后在启动前连接设备。

自动镜像

scrcpy的作者提供了一个小工具AutoAdb,当设备连接,会自动启动镜像。

autoadb scrcpy -s '{}'

注:当设备投屏到电脑,若此时设备在播放音乐,也会被转移到电脑播放,这就起到了将设备的音乐串流到电脑音箱播放的作用(仅支持 Android 11及以上)。

从 Android 11 开始,"无线调试”选项允许开发者在没有物理连接(如USB线)的情况下,将设备与电脑连接,以便进行应用程序的开发和调试。


-------- 客户端体系结构 --------

以下是视频和音频流的客户端体系结构概述:

安卓手机投屏与游戏神器Scrcpy一站全懂——最详细命令行教程_手机投屏电视_08

视频和音频在设备上被捕获和编码,生成的数据包使用自定义协议,通过 adb 通道的独立套接字发送至客户端。该协议传输原始编码数据包,数据包头提供数据包边界(用于减少视频延迟)和 PTS(用于记录)的早期信息。

然后经由 demuxer 步骤将视频和音频流解复用为数据包。

如果启用了录制功能,demuxer 会将基本流异步并入 MP4 或 MKV。因此,数据包在设备端编码,但在客户端进行封装,分工如此。

若要将画面显示出来或发送到 V4L2,需要将视频数据包解码为视频帧;同理,若是要播放音频,需要将数据包解码为音频帧(blocks of samples) 并由 audio player 组件播放。


-------- 视频 --------


分辨率

默认情况下,scrcpy 会尝试以 Android 设备的原始分辨率进行镜像。

若想提高显示性能,可以降低镜像的分辨率。

将宽度和高度限制为某个最大值,比如1024:

scrcpy --max-size=1024 #

scrcpy -m 1024   # 简写

Scrcpy 会根据镜像比例计算另一条边长。比如1920×1080 的设备将以 1024×576 进行镜像。

如果编码失败,scrcpy 会自动以较低的分辨率重试 ,除非启用了这条参数:--no-downsize-on-erro

比特率

默认的镜像比特率为8Mbps,可以更改:

scrcpy --video-bit-rate=2M

scrcpy --video-bit-rate=2000000  # 与上一条相同的比特率

scrcpy -b 2M   # 简写

控制帧率

可以限制捕获的最大帧率:

scrcpy --max-fps=15

实际捕获帧率输出到控制台,每秒显示一次:

scrcpy --print-fps

结合使用可看到镜像的实时帧率:

scrcpy -s TESTID-Mi999 --max-fps=15 --print-fps

也可以随时使用 ALT+ i 来启用或关闭帧率的输出(请参阅快捷方式一节)

注:以上3个参数:分辨率,比特率,帧率都会影响到画面的流畅度。若是用电脑显示器观看手机视频,参数的值需要大一些以获得高画质和不卡顿的播放:

 #高质量播放,帧率60,旋转画面(手机应用需要横屏),ALT+f 退回桌面

scrcpy --max-fps=60 --fullscreen -b 20M --audio-buffer=200 --display-buffer=200 --lock-video-orientation=1

反之若是网络条件不好,或者是无线连接,可降低这3个参数的值以降低带宽需求:

scrcpy --max-fps=15 -m 1024  -b 2M

Codec(编解码器)

可以选择设备的视频编解码器,可选值为:默认,h264,h265,av1

scrcpy --video-codec=h264  # 默认编码器

scrcpy --video-codec=h265

scrcpy --video-codec=av1

H265提供更好的质量,H264提供更低的延迟,如果你的设备支持AV1那就更好了。

对于高级用法,要将任意参数传递给MediaFormat,请参看帮助 scrcpy --help,其中的参数 --video-codec-options 一节。

Encoder(编码器)

列出设备上所有可用的编码器:

scrcpy --list-encoders   # 若PC连接了连接单个设备,自动选择设备

scrcpy -s TESTID-Mi999 --list-encoders  #若PC连接了多个设备,要指定该设备的UUID

安卓手机投屏与游戏神器Scrcpy一站全懂——最详细命令行教程_手机投屏电脑_09

有时默认编码器可能出现问题甚至崩溃,此时可尝试其它编码器,由 --video-codec 参数给出 codec。

比如上图显示出2个h264编码器:OMX.qcom.video.encoder.avc 和 OMX.google.h264.encodercodec,他们归属于 h264 Coder 之下,于是这样选择某个具体的h264编码器:

scrcpy --video-codec=h264 --video-encoder='OMX.qcom.video.encoder.avc'

注:avc是h264的另一个名字。

旋转屏幕

可以在 4个不同的级别上旋转投影屏幕:

●  ALT+r 切换横竖屏。只有当前运行的app支持请求的方向才会旋转。

●  --lock-video-orientation 更改镜像的方向,这是设备发送的视频方向,会影响录像。

●  --orientation 这是PC客户端的显示方向,影响显示和录像。

●  --rotation 只影响显示不影响录像。可以使用快捷键ALT + 左箭头ALT + 左箭头随时动态更改。

在捕获端锁定镜像方向(会影响录像的方向):

scrcpy --lock-video-orientation     # 初始(当前)的方向

scrcpy --lock-video-orientation=0    # 自然方向(手机是纵向,平板是横向)

scrcpy --lock-video-orientation=90    # 90° 顺时针方向

scrcpy --lock-video-orientation=180   # 180°

scrcpy --lock-video-orientation=270    # 270° 顺时针方向

在渲染端锁定镜像方向(会影响录像的方向):

scrcpy --orientation=0

scrcpy --orientation=90       # 90° 顺时针

scrcpy --orientation=180      # 180°

scrcpy --orientation=270      # 270° 顺时针

scrcpy --orientation=flip0    # 水平翻转

scrcpy --orientation=flip90   # 水平翻转+ 90°顺时针

scrcpy --orientation=flip180  # 垂直翻转 (水平翻转 + 180°)

scrcpy --orientation=flip270  # 水平翻转 + 270°顺时针

锁定镜像方向(不影响录像的方向):

scrcpy --rotation=1   # 可选的值为0、1、2、3。每增加一个数就逆时针旋转90度。

注:--lock-video-orientation和 --orientation都能影响录像的方向,但有何差别?

默认情况下,PC屏幕上的镜像方向会随着设备的旋转而自动旋转。打开手机的“自动旋转”选项,再运行支持自动旋转的应用(比如计算器),如果垂直拿着手机,PC屏幕上的手机镜像就是垂直方向;横着拿手机,镜像也会自动横过来(或者按 ALT+r 也可以实现该效果,无需旋转手机)。

--lock-video-orientation 就是PC屏幕上的镜像方向由参数指定,不再随着手机的旋转而旋转,这在某些情况下可能很有用,比如需要在固定的方向上显示应用程序,或者玩游戏。

--orientation 则是镜像会随着设备的旋转而发生变化,比如

scrcpy --orientation=0   # 不旋转

scrcpy --orientation=1  # 逆时针90度

scrcpy --orientation=2   # 180度

屏幕裁剪

可以对设备屏幕进行裁剪,只镜像屏幕的一部分:

scrcpy --crop=600:800:0:0   # 以 (0,0) 为原点的 600x800 像素

数值以设备的自然方向表示(手机为纵向,平板电脑为横向)

如果同时指定了 --max-size,会先裁剪,再缩放。

多显示屏

如果设备有多个显示屏,可以选择要镜像的显示屏:

scrcpy --display=1

获得设备的显示屏ID列表:

scrcpy --list-displays

设备至少运行 Android 10 才能控制副屏,否则副屏将被镜像为只读,即只能投屏而不能控制。

缓冲

默认情况下没有视频缓冲,以获得尽可能低的延迟。

你也可以通过添加缓冲(增加了视频流延迟)的方法来补偿视频的卡顿,以获得更流畅的播放效果。

视频、v4L2 sinks 和音频播放都可应用本参数:

scrcpy --display-buffer=50   # 为视频添加 50ms 缓冲

scrcpy --v4l2-buffer=300     # 为 v4L2 sinks 添加 300ms 缓冲

scrcpy --audio-buffer=200   # 为音频播放添加 200ms 缓冲

可以同时使用:

scrcpy --display-buffer=50 --v4l2-buffer=300

不播放

--no-playback 参数禁止在PC上播放镜像和音频,但不影响录像,这在需要隐蔽或不受干扰的情况下录像,或启用v4L2时非常有用:

scrcpy --v4l2-sink=/dev/video2 --no-playback

scrcpy --record=file.mkv --no-playback 

# 用Ctr+C中断。

也可以单独禁用视频和音频播放:

# 将视频发送到V4L2sink而不播放,但保持音频播放

scrcpy --v4l2-sink=/dev/video2 --no-video-playback

# 录制视频和音频,但只播放视频

scrcpy --record=file.mkv --no-audio-playback

注:若要顺利地录制音频,需要 Android 11 及以上版本,参见“音频”一节。

无视频

禁用视频转发,只转发音频:

scrcpy --no-video

Video4Linux

请参阅 Video4Linux 一节。


-------- 音频 --------


音频转发即 Android 设备的音频被转发至电脑。仅支持 Android 11 及更高版本的设备,能提供低延迟的音频输出,默认启用转发。

● 对于 Android 12 或更新的设备,音频转发功能开箱即用。

● 对于 Android 11,启动 scrcpy 时需要确保设备屏幕解锁。一个假弹出窗口会短暂出现,让系统认为 shell 应用程序处于前台。如果不这样做,音频捕获就会失败。

对于 Android 10 及更早版本,无法音频捕获,会自动禁用。

如果音频捕获失败,仍会继续捕获视频(由于默认情况下已启用了音频,因此如果不能使用音频,就不能让 scrcpy 失败),除非设置了 --require-audio。

无音频

禁用音频:scrcpy --no-audio

如果仅仅是不播放音频,但仍然转发音频用于录制,参见上文的”不播放“一节。

仅音频

若仅播放音频,请禁用视频播放:

scrcpy --no-video   #用Ctr+C中断。

在没有视频的情况下,音频延迟通常并不敏感,因此建议增加缓冲,以最大限度地减少音频的卡顿:

scrcpy --no-video --audio-buffer=200

音频源

默认音频源是转发设备的音频输出:

scrcpy --audio-source=output

可以改为捕获设备的麦克:

scrcpy --audio-source=mic

例如,你的电脑没有麦克,但可以利用手机的麦克将声音传至电脑,在电脑上录音:

scrcpy --audio-source=mic --no-video --no-playback --record=file.opus

按 Ctrl+c 退出录制。

Codec(编解码器)

可以选择音频编解码器,值为:默认值,(uncompressed PCM 16-bit LE):opus,aac,flac,raw

scrcpy --audio-codec=opus  # 默认

scrcpy --audio-codec=aac

scrcpy --audio-codec=flac

scrcpy --audio-codec=raw

举例:录制视频和音频,其中视频编码为H.264,音频编码为AAC,以MP4格式封装:

scrcpy -r abc.mp4 --video-codec=h264 --audio-codec=aac

如果收到如下错误:

Failed to initialize audio/opus, error 0xfffffffe

说明你的设备没有Opus编码器,试试 scrcpy --audio-codec=aac

对于高级用法,要将任意参数传递给MediaFormat,请参看帮助 scrcpy --help,其中的 --video-codec-options 一节。

Encoder(编码器)

设备上可能有多个视频编码器和音频编码器,按以下语法列出:

scrcpy --list-encoders

安卓手机投屏与游戏神器Scrcpy一站全懂——最详细命令行教程_手机投屏电脑_09

执行以下命令选择特定的音频编码器:

scrcpy --audio-codec=opus --audio-encoder='OMX.google.aac.encoder'

比特率

默认音频比特率为 128Kbps。若要更改:

scrcpy --audio-bit-rate=64K

scrcpy --audio-bit-rate=64000  # 与上一条相同

注:此参数不适用于 RAW 音频编解码器(--audio-codec=raw)

缓冲

必须为音频配置缓冲。它必足够小,以保持可接受的延迟;但也要足够大,以尽量减少缓冲区不足导致的音频故障。

默认缓冲区大小设置为50ms,可以调整:

scrcpy --audio-buffer=40        # 比默认值小

scrcpy --audio-buffer=100      # 比默认值大

请注意,该选项会更改目标缓冲。可能无法达到目标缓冲(通常是在缓冲区频繁下溢时)。

如果你与设备之间没有交互操作(比如仅观看视频),最好采用较高的视频延迟和音频延迟,以得到平滑不卡顿的的播放效果:

scrcpy --display-buffer=200 --audio-buffer=200

还可以配置另一个音频缓冲区(音频输出缓冲区),默认设置为 5ms。尽量不改,除非你听到了一些”机器人音“和故障音:

scrcpy --audio-output-buffer=10   # 只在绝对必要的情况下改变数值


-------- 控制 --------


只读镜像

仅镜像设备而不控制设备 (包括任何可与设备交互的方式,如键盘输入、鼠标事件和文件拖放):

scrcpy --no-control

scrcpy -n  #简写

这对于将视频投射到电脑的大显示器上观看很有帮助,因为键鼠不会影响到手机。

还可以使用 H.265 编码提升视频清晰度,同时增加音频和视频的延迟以提升播放的稳定性:

scrcpy --no-control --video-codec=h265 --display-buffer=200 --audio-buffer=200

文本注入偏好

输入文本时,会产生两种类型的事件:

● 按键事件,表示按键被按下或松开;

● 文本事件,表示已输入文本。

Scrcpy默认使用按键事件来输入字母,只有这样,键盘才会在游戏中正常运作 (例如 WASD 键)。

但这也有可能造成一些问题。如果你遇到了问题,可以通过以下方式避免:

scrcpy --prefer-text    #文件事件,但这会导致键盘在游戏中工作不正常

scrcpy --raw-key-events    #或者相反,你可以强制始终注入原始按键事件

这些选项对 HID 键盘没有影响(所有键事件都作为此模式下的扫描码发送)。

按键事件同时提供扫描码(键盘上按键的物理位置)和键码(取决于键盘布局), scrcpy 仅使用键码(它不需要物理按键的位置)。

然而,按键事件不足以处理文本输入——有时需要多次按键才能生成一个字符,有时一个按键可以产生多个字符,即使是简单的字符在按键事件中也可能不容易处理,因为它们取决于布局。例如,在法语键盘上,键入 (点) 会生成 +.

为此,Scrcpy只将有限的一组按键触发的按键事件转发到设备,其余的由文本事件处理。

这一组按键是:ENTER,ESC,BACKSPACE,TAB,HOME,PAGE_UP,PAGE_DOWN,DEL,END,上下左右4个方向键。

双向复制和粘贴

每当设备的剪贴板发生变化,会被自动同步到电脑的剪贴板。

反之,scrcpy 会在向设备注入Ctrl+v之前,自动将电脑剪贴板同步到 设备剪贴板。

快捷键都会转发到设备,比如 Ctrl:

● Ctrl+c 通常执行复制

● Ctrl+x 通常执行剪切

● Ctrl+v 通常执行粘贴 (在电脑到设备的剪贴板同步完成之后)

为啥强调“通常”呢?虽然大多数情况下这3个快捷键都会执行以上功能,但实际的行为取决于设备前台运行的程序。比如当按下Ctlr+c,Termux 会发送 SIGINT,而 K-9 Mail 会新建一封邮件。

若是碰到这种情况,设备上的复制,剪切和粘贴快捷键会有所改变(Android >= 7):

ALT+c 注入 COPY (复制)

ALT+x 注入 CUT (剪切)

ALT+v 注入 PASTE (粘贴) (在电脑到设备的剪贴板同步完成之后)

另外,某些app不接受粘贴 (比如 Termux),此时可使用快捷键 ALT+Shift+v 将电脑的剪贴板文本转换为一串“按键事件”输入到设备,就像是你敲键盘输入那样。不过该功能可能会导致非 ASCII 编码的内容出现错误,或者干脆无法粘贴。

作为 ALT+Shift+v 的替代,选项 --legacy-paste 的作用是,当你按下Ctrl+v,剪贴板中的文本会被模拟为按键输入到设备。

警告: 将电脑剪贴板的内容粘贴至设备 (无论是通过 Ctrl+v 还是ALT+v) 都会将内容复制到 Android 设备的剪贴板。因此任何安卓应用程序都能读取到,应避免将敏感内容 (如密码) 通过这种方式粘贴。

要禁用自动剪贴板同步功能,使用  --no-clipboard-autosync。

双指捏合屏幕缩放

模拟手机/平板的“双指捏合缩放”:Ctrl+按下并拖动鼠标。

在按住 Ctrl 时按下鼠标左键,直到松开鼠标左键前,移动鼠标会使屏幕内容相对于“屏幕中心”进行缩放或旋转 (如果应用支持)。

从技术上来说,scrcpy 会在鼠标位置以及屏幕镜像中心的位置分别生成触摸事件。

重复按键

默认情况下,长时间按住某个键会生成重复的按键事件,这可能会导致某些游戏出现性能问题。

为避免转发重复按键事件,请执行以下操作

scrcpy --no-key-repeat

此选项对 HID 键盘无影响(在此模式下,重复按键由 Android 直接处理)。

右键单击和中键单击

默认情况下,单击鼠标右键是 "后退",单击滚轮(中键)是返回主页。

要禁用这些快捷键并将点击转发到设备,请执行以下命令:

scrcpy --forward-all-clicks

文件拖放

安装APK:

将 APK 文件 (文件名以 .apk 结尾) 拖放到 scrcpy 窗口,会在设备上安装。

不会有视觉反馈,终端会输出一条日志。

将文件推送至设备:

将非 APK 文件拖放至 scrcpy 窗口,默认会推送文件到设备的 /sdcard/Download/

不会有视觉反馈,终端会输出一条日志。经实验,文件名不能有中文和空格。

可以在推送时指定设备上的目标目录:

scrcpy --push-target=/sdcard/Movies/

物理键盘和鼠标模拟

请参阅 HID/OTG 部分。


-------- 设备--------


scrcpy 的一些命令行参数会操作设备自身。

保持唤醒状态

阻止设备在连接时一段时间后休眠:

scrcpy --stay-awake

scrcpy -w   #简写

关闭 scrcpy 后恢复初始状态。

如果设备未物理插入(仅通过TCP/IP连接)则不起作用(这是Android行为)。

关闭设备屏幕

可以通过以下的命令行参数在连接到设备后关闭设备屏幕,但镜像不中断:

scrcpy --turn-screen-off

scrcpy -S   # 简写

或者随时按 ALT+o

要重新打开屏幕,按 ALT+Shift+o。

在安卓系统中,按下POWER(电源键)按钮是打开屏幕。为方便起见,如果通过 scrcpy 发送 POWER(通过右键单击或 MOD+p),则会在稍作延迟后强制关闭屏幕(尽力而为),物理 POWER 按钮仍会打开屏幕。

关闭屏幕,同时阻止设备休眠:

scrcpy --turn-screen-off --stay-awake

scrcpy -Sw  # 简写

显示触摸点

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

Android 在“发者选项”中提供了这项功能。

Scrcpy 提供一个选项,可以在程序启动时开启这项功能并在退出时恢复初始值:

scrcpy --show-touches

scrcpy -t  # 简写

请注意只显示“物理”触摸 (用手指在屏幕上的触摸),不显示来自 scrcpy 的点击。

Scrcpy退出时息屏

scrcpy --power-off-on-close

Scrcpy启动时亮屏

默认情况下,scrcpy启动时设备屏幕就被点亮。若要防止此行为,请执行以下操作:

scrcpy --no-power-on


-------- 投屏窗口--------


标题

默认情况下,镜像窗口标题为设备型号

安卓手机投屏与游戏神器Scrcpy一站全懂——最详细命令行教程_Scrcpy命令行用法_11

可以更改:

scrcpy --window-title='你的标题'

位置和尺寸

可以指定初始镜像窗口的位置和尺寸:

scrcpy --window-x=100 --window-y=100 --window-width=800 --window-height=600

无边框

禁用镜像的边框:

scrcpy --window-borderless    # ALT+f4关闭<