android开源投屏工具scrcpy简介

目录

一,初识scrcpy

1.1 scrcpy介绍

1.2 scrcpy特点

二,scrcpy指令说明

2.1 画面设置

2.1.1 缩小分辨率

2.1.2 修改画面比特率

2.1.3 限制画面帧率

2.1.4 画面裁剪

2.1.5 锁定屏幕朝向

2.2 屏幕录制

2.3  连接方式

2.3.1 无线

2.3.2 多设备

2.4 窗口设置

2.4.1  标题

2.4.2 位置和大小

2.4.3 无边框

2.4.4 保持窗口在最前面

2.4.5 全屏

2.4.6 旋转

2.5  其它设置

2.5.1 只读

2.5.2 显示屏

2.5.3 保持常亮

2.5.4 关闭设备屏幕

2.5.5 关闭屏保

2.6 文件传输

2.6.1 安装APK

2.6.2 将文件推送至设备


一,初识scrcpy

1.1 scrcpy介绍

首先,我们来认识一下Scrcpy

Scrcpy 是一个开源的命令行工具软件,被设计用于使计算机用户能通过android adb或通过usb数据线控制其Android设备,支持通过鼠标和键盘对Android设备操作,更重要的是无需root权限。

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

电脑上安装scrcpy后,执行scrcpy命令,弹出镜像窗口如下,

1.2 scrcpy特点

  • 免费开源
  • 无需root权限
  • 可以运行在Linux,Window和Mac系统上
  • 可以共享剪贴板
  • 轻量 (原生,仅显示设备屏幕)
  • 性能 (30~60fps)
  • 质量 (分辨率可达1920x1080或更高)
  • 低延迟 (35-70ms)
  • 快速启动 (数秒内即能开始显示)
  • 无侵入性 (不需要在安卓设备上安装任何程序)

二,scrcpy指令说明

2.1 画面设置

2.1.1 缩小分辨率

有时候,将设备屏幕镜像分辨率降低可以有效地提升性能。

我们可以将高度和宽度都限制在一定大小内(如 1024):

scrcpy --max-size 1024
scrcpy -m 1024  # short version

较短的一边会被按比例缩小以保持设备的显示比例。这样,1920x1080 的设备会以 1024x576 的分辨率显示。

2.1.2 修改画面比特率

默认的比特率是8Mbps。如果要改变画面的比特率 (比如说改成2Mbps):

scrcpy --bit-rate 2M
scrcpy -b 2M  # short version

2.1.3 限制画面帧率

画面的帧率可以通过下面的命令被限制:

scrcpy--max-fps15

这个功能仅在Android 10和以后的版本被Android官方支持,但也有可能在更早的版本可用。

2.1.4 画面裁剪

设备画面可在裁切后进行镜像,以显示部分屏幕。

这项功能可以用于,例如,只显示Oculus Go的一只眼睛。

scrcpy--crop1224:1440:0:0#1224x1440atoffset(0,0)

如果--max-size在同时被指定,分辨率的改变将在画面裁切后进行。

2.1.5 锁定屏幕朝向

scrcpy --lock-video-orientation 0   # 自然朝向
scrcpy --lock-video-orientation 1   # 90° 逆时针旋转
scrcpy --lock-video-orientation 2   # 180°
scrcpy --lock-video-orientation 3   # 90° 顺时针旋转

该设定影响录制。

2.2 屏幕录制

可以在屏幕镜像的同时录制视频:

scrcpy --record file.mp4
scrcpy -r file.mkv

在不开启屏幕镜像的同时录制:

scrcpy --no-display --record file.mp4
scrcpy -Nr file.mkv
# 按Ctrl+C以停止录制

在显示中“被跳过的帧”会被录制,虽然它们由于性能原因没有实时显示。在传输中每一帧都有 时间戳 ,所以 包时延变化 并不影响录制的文件。

2.3  连接方式

2.3.1 无线

Scrcpy 使用adb来与安卓设备连接。同时,adb能够通过TCP/IP连接到安卓设备:

  • 将您的安卓设备和电脑连接至同一Wi-Fi。
  • 获取安卓设备的IP地址(在设置-关于手机-状态信息)。
  • 打开安卓设备的网络adb功能adb tcpip 5555。
  • 将您的设备与电脑断开连接。
  • 连接到您的设备:adb connect DEVICE_IP:5555(用设备IP替换 DEVICE_IP)。
  • 运行scrcpy。

降低比特率和分辨率可能有助于性能:

scrcpy --bit-rate 2M --max-size 800
scrcpy -b2M -m800  # short version

2.3.2 多设备

如果多个设备在执行adb devices后被列出,您必须指定设备的序列号 :

scrcpy --serial 0123456789abcdef
scrcpy -s 0123456789abcdef  # short version

如果设备是通过TCP/IP方式连接到电脑的:

scrcpy --serial 192.168.0.1:5555
scrcpy -s 192.168.0.1:5555  # short version

您可以同时启动多个 scrcpy 实例以同时显示多个设备的画面。

 

 

2.4 窗口设置

2.4.1  标题

窗口的标题默认为设备型号。您可以通过如下命令修改它:

scrcpy--window-title'Mydevice'

2.4.2 位置和大小

您可以指定初始的窗口位置和大小:

scrcpy--window-x100--window-y100--window-width800--window-height600

2.4.3 无边框

关闭边框:

scrcpy--window-borderless

2.4.4 保持窗口在最前面

您可以通过如下命令保持窗口在最前面:

scrcpy--always-on-top 

2.4.5 全屏

您可以通过如下命令直接全屏启动scrcpy:

scrcpy --fullscreen
scrcpy -f  # short version

全屏状态可以通过MOD+f实时改变。

2.4.6 旋转

通过如下命令,窗口可以旋转:

scrcpy--rotation1 

可选的值有:

  • 0: 无旋转
  • 1: 逆时针旋转90°
  • 2: 旋转180°
  • 3: 顺时针旋转90°

这同样可以使用MOD+← (左) 和 MOD+→ (右) 的快捷键实时更改。

需要注意的是, scrcpy 控制三个不同的朝向:

  • MOD+r 请求设备在竖屏和横屏之间切换(如果前台应用程序不支持所请求的朝向,可能会拒绝该请求)。
  • --lock-video-orientation 改变镜像的朝向(设备镜像到电脑的画面朝向)。这会影响录制。
  • --rotation (或MOD+←/MOD+→) 只旋转窗口的画面。这只影响显示,不影响录制。‍

2.5  其它设置

2.5.1 只读

关闭电脑对设备的控制(如键盘输入、鼠标移动和文件传输):

scrcpy --no-control
scrcpy -n

2.5.2 显示屏

如果有多个显示屏可用,您可以选择特定显示屏进行镜像:

scrcpy--display1 

您可以通过如下命令找到显示屏的id:

adb shell dumpsys display #在回显中搜索“mDisplayId=” 

第二显示屏可能只能在设备运行Android 10或以上的情况下被控制(它可能会在电脑上显示,但无法通过电脑操作)。

2.5.3 保持常亮

防止设备在已连接的状态下休眠:

scrcpy --stay-awake
scrcpy -w

程序关闭后,设备设置会恢复原样。

2.5.4 关闭设备屏幕

在启动屏幕镜像时,可以通过如下命令关闭设备的屏幕:

scrcpy--turn-screen-off
scrcpy-S

或者在需要的时候按MOD+o。

要重新打开屏幕的话,需要按MOD+Shift+o.

在Android上,电源按钮始终能把屏幕打开。

为了方便,如果按下电源按钮的事件是通过 scrcpy 发出的(通过点按鼠标右键或MOD+p),它会在短暂的延迟后将屏幕关闭。

物理的电源按钮仍然能打开设备屏幕。

同时,这项功能还能被用于防止设备休眠:

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

 

 

2.5.5 关闭屏保

Scrcpy 不会默认关闭屏幕保护。

关闭屏幕保护:

scrcpy--disable-screensaver 

2.6 文件传输

2.6.1 安装APK

如果您要安装APK,请拖放APK文件(文件名以.apk结尾)到 scrcpy 窗口。

该操作在屏幕上不会出现任何变化,而会在控制台输出一条日志。

2.6.2 将文件推送至设备

如果您要推送文件到设备的 /sdcard/,请拖放文件至(不能是APK文件)scrcpy 窗口。

该操作没有可见的响应,只会在控制台输出日志。

在启动时可以修改目标目录:

scrcpy--push-target/sdcard/foo/bar/ 
  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Scrcpy是一个用于在计算机上控制和显示Android设备屏幕的开源工具。它通过USB连接将Android设备与计算机进行通信,并使用ADB(Android Debug Bridge)协议来发送和接收设备屏幕的图像和输入事件。 Scrcpy投屏原理可以简单概括为以下几个步骤: 1. 连接设备:Scrcpy首先通过ADB连接到Android设备。ADB是一个用于与Android设备通信的命令行工具,它允许Scrcpy发送和接收设备屏幕的数据。 2. 获取设备屏幕信息:Scrcpy获取设备屏幕的分辨率、像素格式等信息,以便正确地显示设备屏幕。 3. 创建显示窗口:Scrcpy在计算机上创建一个显示窗口,用于显示设备屏幕的图像。 4. 接收和解码视频流:Scrcpy通过ADB接收设备屏幕的视频流数据,并使用FFmpeg库对视频流进行解码。解码后的视频帧可以在计算机上进行显示。 5. 显示视频帧:Scrcpy将解码后的视频帧显示在计算机上的显示窗口中,实现实时显示设备屏幕。 6. 处理输入事件:Scrcpy通过ADB发送计算机上的输入事件(如鼠标点击、键盘输入)到Android设备,实现对设备的控制。 7. 循环处理事件:Scrcpy使用一个事件循环来处理设备屏幕的变化和用户输入事件。它等待来自设备的事件,并根据事件类型执行相应的操作,如更新显示窗口、发送输入事件等。 总结起来,Scrcpy通过ADB连接到Android设备,接收和解码设备屏幕的视频流,并将解码后的视频帧显示在计算机上的窗口中,同时将计算机上的输入事件发送到Android设备,实现对设备屏幕的控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佳哥的技术分享

创作不易,谢谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值