-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
scrcpy #77
Comments
scrcpy 2.4 --always-on-top --audio-bit-rate=value --audio-buffer=ms --audio-codec=name --audio-codec-options=key[:type]=value[,...] --audio-encoder=name --audio-source=source --audio-output-buffer=ms -b, --video-bit-rate=value --camera-ar=ar --camera-id=id --camera-facing=facing --camera-high-speed --camera-size=x --camera-fps=value --crop=width:height:x:y -d, --select-usb --disable-screensaver --display-buffer=ms --display-id=id --display-orientation=value -e, --select-tcpip -f, --fullscreen --force-adb-forward --forward-all-clicks -h, --help -K --keyboard=mode --kill-adb-on-close --legacy-paste --list-cameras --list-camera-sizes --list-displays --list-encoders --lock-video-orientation[=value] -m, --max-size=value -M --max-fps=value --mouse=mode -n, --no-control -N, --no-playback --no-audio --no-audio-playback --no-cleanup --no-clipboard-autosync --no-downsize-on-error --no-key-repeat --no-mipmaps --no-power-on --no-video --no-video-playback --orientation=value --otg 将参数的文档修改为中文的助记卡片表格,参数不要翻译: --pause-on-exit[=mode] --power-off-on-close --prefer-text --print-fps --push-target=path -r, --record=file.mp4 --raw-key-events --record-format=format --record-orientation=value --render-driver=name --require-audio -s, --serial=serial -S, --turn-screen-off --shortcut-mod=key[+...][,...] -t, --show-touches --tcpip[=ip[:port]] --time-limit=seconds --tunnel-host=ip --tunnel-port=port -v, --version -V, --verbosity=value --v4l2-sink=/dev/videoN --v4l2-buffer=ms --video-codec=name --video-codec-options=key[:type]=value[,...] --video-encoder=name --video-source=source -w, --stay-awake --window-borderless --window-title=text --window-x=value --window-y=value --window-width=value --window-height=value Shortcuts: In the following list, MOD is the shortcut modifier. By default, it's (left) Alt or (left) Super, but it can be configured by --shortcut-mod (see above). MOD+f
Environment variables:
Exit status:
--always-on-top -- Make scrcpy window always on top (above other windows) |
|
运行连接安卓设备,然后执行: scrcpy 本程序支持命令行参数,查看参数列表: scrcpy --help 功能介绍采集设置降低分辨率有时候,可以通过降低镜像的分辨率来提高性能。 要同时限制宽度和高度到某个值 (例如 1024): scrcpy --max-size 1024
scrcpy -m 1024 # 简写 另一边会被按比例缩小以保持设备的显示比例。这样,1920×1080 分辨率的设备会以 1024×576 的分辨率进行镜像。 修改码率默认码率是 8 Mbps。改变视频码率 (例如改为 2 Mbps): scrcpy --bit-rate 2M
scrcpy -b 2M # 简写 限制帧率要限制采集的帧率: scrcpy --max-fps 15 本功能从 Android 10 开始才被官方支持,但在一些旧版本中也能生效。 画面裁剪可以对设备屏幕进行裁剪,只镜像屏幕的一部分。 例如可以只镜像 Oculus Go 的一只眼睛。 scrcpy --crop 1224:1440:0:0 # 以 (0,0) 为原点的 1224x1440 像素 如果同时指定了 锁定屏幕方向要锁定镜像画面的方向: scrcpy --lock-video-orientation # 初始(目前)方向
scrcpy --lock-video-orientation=0 # 自然方向
scrcpy --lock-video-orientation=1 # 逆时针旋转 90°
scrcpy --lock-video-orientation=2 # 180°
scrcpy --lock-video-orientation=3 # 顺时针旋转 90° 只影响录制的方向。 编码器一些设备内置了多种编码器,但是有的编码器会导致问题或崩溃。可以手动选择其它编码器: scrcpy --encoder OMX.qcom.video.encoder.avc 要列出可用的编码器,可以指定一个不存在的编码器名称,错误信息中会包含所有的编码器: scrcpy --encoder _ 采集屏幕录制可以在镜像的同时录制视频: scrcpy --record file.mp4
scrcpy -r file.mkv 仅录制,不显示镜像: scrcpy --no-display --record file.mp4
scrcpy -Nr file.mkv
# 按 Ctrl+C 停止录制 录制时会包含“被跳过的帧”,即使它们由于性能原因没有实时显示。设备会为每一帧打上 时间戳 ,所以 包时延抖动 不会影响录制的文件。 v4l2loopback在 Linux 上,可以将视频流发送至 v4l2 回环 (loopback) 设备,因此可以使用任何 v4l2 工具像摄像头一样打开安卓设备。 需安装 sudo apt install v4l2loopback-dkms 创建一个 v4l2 设备: sudo modprobe v4l2loopback 这样会在 列出已启用的设备: # 需要 v4l-utils 包
v4l2-ctl --list-devices
# 简单但或许足够
ls /dev/video* 使用一个 v4l2 漏开启 scrcpy: scrcpy --v4l2-sink=/dev/videoN
scrcpy --v4l2-sink=/dev/videoN --no-display # 禁用窗口镜像
scrcpy --v4l2-sink=/dev/videoN -N # 简写 (将 启用之后,可以使用 v4l2 工具打开视频流: ffplay -i /dev/videoN
vlc v4l2:///dev/videoN # VLC 可能存在一些缓冲延迟 例如,可以在 OBS 中采集视频。 缓冲可以加入缓冲,会增加延迟,但可以减少抖动 (见 #2464)。 对于显示缓冲: scrcpy --display-buffer=50 # 为显示增加 50 毫秒的缓冲 对于 V4L2 漏: scrcpy --v4l2-buffer=500 # 为 v4l2 漏增加 500 毫秒的缓冲 连接TCP/IP (无线)Scrcpy 使用 自动配置参数 对于传入的 adb 连接,如果设备(在这个例子中以192.168.1.1为可用地址)已经监听了一个端口(通常是5555),运行: scrcpy --tcpip=192.168.1.206 # 默认端口是5555
scrcpy --tcpip=192.168.1.1:5555 如果adb TCP/IP(无线) 模式在某些设备上不被启用(或者你不知道IP地址),用USB连接设备,然后运行: scrcpy --tcpip # 无需其他参数 这将会自动寻找设备IP地址,启用TCP/IP模式,然后在启动之前连接到设备。 手动配置或者,可以通过
降低比特率和分辨率可能很有用: scrcpy --bit-rate 2M --max-size 800
scrcpy -b2M -m800 # 简写 多设备如果 scrcpy --serial 0123456789abcdef
scrcpy -s 0123456789abcdef # 简写 如果设备通过 TCP/IP 连接: scrcpy --serial 192.168.0.1:5555
scrcpy -s 192.168.0.1:5555 # 简写 您可以同时启动多个 scrcpy 实例以同时显示多个设备的画面。 在设备连接时自动启动您可以使用 AutoAdb: autoadb scrcpy -s '{}' 隧道要远程连接到设备,可以将本地的 adb 客户端连接到远程的 adb 服务端 (需要两端的 adb 协议版本相同)。 远程ADB服务器要连接到一个远程ADB服务器,让服务器在所有接口上监听: adb kill-server
adb -a nodaemon server start
# 保持该窗口开启 警告:所有客户端与ADB服务器的交流都是未加密的。 假设此服务器可在 192.168.1.2 访问。 然后,从另一个终端,运行 scrcpy: export ADB_SERVER_SOCKET=tcp:192.168.1.2:5037
scrcpy --tunnel-host=192.168.1.2 默认情况下,scrcpy使用用于
SSH 隧道为了安全地与远程ADB服务器通信,最好使用SSH隧道。 首先,确保ADB服务器正在远程计算机上运行: adb start-server 然后,建立一个SSH隧道: # 本地 5038 --> 远程 5037
# 本地 27183 <-- 远程 27183
ssh -CN -L5038:localhost:5037 -R27183:localhost:27183 your_remote_computer
# 保持该窗口开启 在另一个终端上,运行scrcpy: export ADB_SERVER_SOCKET=tcp:localhost:5038
scrcpy 若要不使用远程端口转发,可以强制使用正向连接(注意是 # 本地 5038 --> 远程 5037
# 本地 27183 <-- 远程 27183
ssh -CN -L5038:localhost:5037 -L27183:localhost:27183 your_remote_computer
# 保持该窗口开启 在另一个终端上,运行scrcpy: export ADB_SERVER_SOCKET=tcp:localhost:5038
scrcpy --force-adb-forward 类似地,对于无线连接,可能需要降低画面质量:
窗口设置标题窗口的标题默认为设备型号。可以通过如下命令修改: scrcpy --window-title "我的设备" 位置和大小您可以指定初始的窗口位置和大小: scrcpy --window-x 100 --window-y 100 --window-width 800 --window-height 600 无边框禁用窗口边框: scrcpy --window-borderless 保持窗口在最前您可以通过如下命令保持窗口在最前面: scrcpy --always-on-top 全屏您可以通过如下命令直接全屏启动 scrcpy: scrcpy --fullscreen
scrcpy -f # 简写 全屏状态可以通过 MOD+f 随时切换。 旋转可以通过以下命令旋转窗口: scrcpy --rotation 1 可选的值有:
也可以使用 MOD+← (左箭头) 和 MOD+→ (右箭头) 随时更改。 需要注意的是, scrcpy 中有三类旋转方向:
其他镜像设置只读禁用电脑对设备的控制 (任何可与设备交互的方式:如键盘输入、鼠标事件和文件拖放): scrcpy --no-control
scrcpy -n 显示屏如果设备有多个显示屏,可以选择要镜像的显示屏: scrcpy --display 1 可以通过如下命令列出所有显示屏的 id:
控制第二显示屏需要设备运行 Android 10 或更高版本 (否则将在只读状态下镜像)。 保持常亮阻止设备在连接时一段时间后休眠: scrcpy --stay-awake
scrcpy -w scrcpy 关闭时会恢复设备原来的设置。 关闭设备屏幕可以通过以下的命令行参数在关闭设备屏幕的状态下进行镜像: scrcpy --turn-screen-off
scrcpy -S 或者在任何时候按 MOD+o。 要重新打开屏幕,按下 MOD+Shift+o。 在Android上, 还可以同时阻止设备休眠: scrcpy --turn-screen-off --stay-awake
scrcpy -Sw 退出时息屏scrcpy 退出时关闭设备屏幕: scrcpy --power-off-on-close 显示触摸在演示时,可能会需要显示 (在物理设备上的) 物理触摸点。 Android 在 开发者选项 中提供了这项功能。 Scrcpy 提供一个选项可以在启动时开启这项功能并在退出时恢复初始设置: scrcpy --show-touches
scrcpy -t 请注意这项功能只能显示 物理 触摸 (用手指在屏幕上的触摸)。 关闭屏保Scrcpy 默认不会阻止电脑上开启的屏幕保护。 关闭屏幕保护: scrcpy --disable-screensaver 输入控制旋转设备屏幕使用 MOD+r 在竖屏和横屏模式之间切换。 需要注意的是,只有在前台应用程序支持所要求的模式时,才会进行切换。 复制粘贴每次安卓的剪贴板变化时,其内容都会被自动同步到电脑的剪贴板上。 所有的 Ctrl 快捷键都会被转发至设备。其中:
大多数时候这些按键都会执行以上的功能。 但实际的行为取决于设备上的前台程序。例如,Termux 会在按下 Ctrl+c 时发送 SIGINT,又如 K-9 Mail 会新建一封邮件。 要在这种情况下进行剪切,复制和粘贴 (仅支持 Android >= 7):
另外,MOD+Shift+v 会将电脑的剪贴板内容转换为一串按键事件输入到设备。在应用程序不接受粘贴时 (比如 Termux),这项功能可以派上一定的用场。不过这项功能可能会导致非 ASCII 编码的内容出现错误。 警告: 将电脑剪贴板的内容粘贴至设备 (无论是通过 Ctrl+v 还是 MOD+v) 都会将内容复制到设备的剪贴板。如此,任何安卓应用程序都能读取到。您应避免将敏感内容 (如密码) 通过这种方式粘贴。 一些设备不支持通过程序设置剪贴板。通过 要禁用自动剪贴板同步功能,使用 双指缩放模拟“双指缩放”:Ctrl+按住并移动鼠标。 更准确的说,在按住鼠标左键时按住 Ctrl。直到松开鼠标左键,所有鼠标移动将以屏幕中心为原点,缩放或旋转内容 (如果应用支持)。 实际上,scrcpy 会在关于屏幕中心对称的位置上用“虚拟手指”发出触摸事件。 物理键盘模拟 (HID)默认情况下,scrcpy 使用安卓按键或文本注入,这在任何情况都可以使用,但仅限于ASCII字符。 在 Linux 上,scrcpy 可以模拟为 Android 上的物理 USB 键盘,以提供更好地输入体验 (使用 USB HID over AOAv2):禁用虚拟键盘,并适用于任何字符和输入法。 不过,这种方法仅支持 USB 连接以及 Linux平台。 启用 HID 模式: scrcpy --hid-keyboard
scrcpy -K # 简写 如果失败了 (如设备未通过 USB 连接),则自动回退至默认模式 (终端中会输出日志)。这即允许通过 USB 和 TCP/IP 连接时使用相同的命令行参数。 在这种模式下,原始按键事件 (扫描码) 被发送给设备,而与宿主机按键映射无关。因此,若键盘布局不匹配,需要在 Android 设备上进行配置,具体为 设置 → 系统 → 语言和输入法 → 实体键盘。 物理鼠标模拟 (HID)与物理键盘模拟类似,可以模拟一个物理鼠标。 同样,它仅在设备通过 USB 连接时才有效,并且目前仅在 Linux 上受支持。 默认情况下,scrcpy 使用 Android 鼠标事件注入,使用绝对坐标。 通过模拟物理鼠标,在Android设备上出现鼠标指针,并注入鼠标相对运动、点击和滚动。 启用此模式: scrcpy --hid-mouse
scrcpy -M # 简写 您还可以将 启用此模式后,计算机鼠标将被“捕获”(鼠标指针从计算机上消失并出现在 Android 设备上)。 特殊的捕获键,Alt 或 Super,切换(禁用或启用)鼠标捕获。 使用其中之一将鼠标的控制权交还给计算机。 OTG可以仅使用物理键盘和鼠标模拟 (HID) 运行 scrcpy,就好像计算机键盘和鼠标通过 OTG 线直接插入设备一样。 在这个模式下,adb (USB 调试)是不必要的,且镜像被禁用。 启用 OTG 模式: scrcpy --otg
# 如果有多个 USB 设备可用,则通过序列号选择
scrcpy --otg -s 0123456789abcdef 只开启 HID 键盘 或 HID 鼠标 是可行的: scrcpy --otg --hid-keyboard # 只开启 HID 键盘
scrcpy --otg --hid-mouse # 只开启 HID 鼠标
scrcpy --otg --hid-keyboard --hid-mouse # 开启 HID 键盘 和 HID 鼠标
# 为了方便,默认两者都开启
scrcpy --otg # 开启 HID 键盘 和 HID 鼠标 像 文本注入偏好输入文字的时候,系统会产生两种事件:
程序默认使用按键事件来输入字母。只有这样,键盘才会在游戏中正常运作 (例如 WASD 键)。 但这也有可能造成一些问题。如果您遇到了问题,可以通过以下方式避免: scrcpy --prefer-text (但这会导致键盘在游戏中工作不正常) 相反,您可以强制始终注入原始按键事件: scrcpy --raw-key-events 该选项不影响 HID 键盘 (该模式下,所有按键都发送为扫描码)。 按键重复默认状态下,按住一个按键不放会生成多个重复按键事件。在某些游戏中这通常没有实际用途,且可能会导致性能问题。 避免转发重复按键事件: scrcpy --no-key-repeat 该选项不影响 HID 键盘 (该模式下,按键重复由 Android 直接管理)。 右键和中键默认状态下,右键会触发返回键 (或电源键开启),中键会触发 HOME 键。要禁用这些快捷键并把所有点击转发到设备: scrcpy --forward-all-clicks 文件拖放安装APK将 APK 文件 (文件名以 不会有视觉反馈,终端会输出一条日志。 将文件推送至设备要推送文件到设备的 不会有视觉反馈,终端会输出一条日志。 在启动时可以修改目标目录: scrcpy --push-target=/sdcard/Movies/ 音频转发Scrcpy 不支持音频。请使用 sndcpy。 另见 issue #14。 快捷键在以下列表中, MOD 是快捷键的修饰键。 您可以使用 # 使用右 Ctrl 键
scrcpy --shortcut-mod=rctrl
# 使用左 Ctrl 键 + 左 Alt 键,或 Super 键
scrcpy --shortcut-mod=lctrl+lalt,lsuper Super 键通常是指 Windows 或 Cmd 键。
¹双击黑边可以去除黑边。 有重复按键的快捷键通过松开再按下一个按键来进行,如“展开设置面板”:
所有的 Ctrl+按键 的快捷键都会被转发到设备,所以会由当前应用程序进行处理。 自定义路径要使用指定的 adb 二进制文件,可以设置环境变量 ADB=/path/to/adb scrcpy 要覆盖 要覆盖图标,可以设置其路径至 为什么叫 scrcpy ?一个同事让我找出一个和 gnirehtet 一样难以发音的名字。
如何构建?请查看 [BUILD]。 常见问题请查看 FAQ。 开发者请查看开发者页面。 许可协议
相关文章 |
scrcpy 是一个用于控制和显示 Android 设备的桌面应用程序。它通过 USB(或 Wi-Fi)连接到设备,并在电脑上以高帧率显示设备屏幕,同时支持键盘和鼠标输入控制。
前提:确保设备已开启 adb 调试
scrcpy wifi 无线连接设备
在手机上查看ip地址,,如
192.168.59.249
。然后在电脑中运行:
$ adb tcpip 5555 restarting in TCP mode port: 5555 $ adb connect 192.168.59.249 connected to 192.168.59.249:5555 $ scrcpy
--no-audio
--always-on-top
--audio-bit-rate=值
--audio-buffer=ms
--audio-codec=名称
--audio-codec-options=key[:类型]=值[,...]
--audio-encoder=名称
--audio-source=来源
--audio-output-buffer=ms
-b, --video-bit-rate=值
--camera-ar=ar
--camera-id=id
--camera-facing=facing
--camera-high-speed
--camera-size=<宽>x<高>
--camera-fps=值
--crop=宽:高:x:y
-d, --select-usb
--disable-screensaver
--display-buffer=ms
--display-id=id
--display-orientation=值
-e, --select-tcpip
-f, --fullscreen
--force-adb-forward
--forward-all-clicks
-h, --help
--keyboard=mode
--kill-adb-on-close
--legacy-paste
--list-cameras
--list-camera-sizes
--list-displays
--list-encoders
--lock-video-orientation[=值]
-m, --max-size=值
--mouse=mode
--max-fps=值
-n, --no-control
-N, --no-playback
--no-audio-playback
--no-cleanup
--no-clipboard-autosync
--no-downsize-on-error
--no-key-repeat
--no-mipmaps
--no-power-on
--no-video
--no-video-playback
--orientation=值
--otg
-p, --port=port[:port]
--pause-on-exit[=mode]
--power-off-on-close
--prefer-text
--print-fps
--push-target=path
-r, --record=file.mp4
--raw-key-events
--record-format=format
--record-orientation=value
--render-driver=name
--require-audio
-s, --serial=serial
-S, --turn-screen-off
--shortcut-mod=key[+...][,...]
-t, --show-touches
--tcpip[=ip[:port]]
--time-limit=seconds
--tunnel-host=ip
--tunnel-port=port
-v, --version
-V, --verbosity=value
--v4l2-sink=/dev/videoN
--v4l2-buffer=ms
--video-codec=name
--video-codec-options=key[:type]=value[,...]
--video-encoder=name
--video-source=source
-w, --stay-awake
--window-borderless
--window-title=text
--window-x=value
--window-y=value
--window-width=value
--window-height=value
The text was updated successfully, but these errors were encountered: