视频
来源
默认情况下,scrcpy会镜像设备屏幕。
也可以捕获设备摄像头。
请查看专门的camera页面。
大小
默认情况下,scrcpy尝试以Android设备的分辨率进行镜像。
为了提高性能,以较低的定义进行镜像可能很有用。为此,将宽度和高度限制为某个最大值(这里为1024):
scrcpy --max-size=1024
scrcpy -m 1024 # 简洁版本
另一个维度会自动计算,以保持Android设备的纵横比。这样,1920×1080的设备将以1024×576进行镜像。
如果编码失败,scrcpy会自动尝试以更低的定义重新编码(除非启用了--no-downsize-on-error
)。
比特率
默认的视频比特率为8 Mbps。要更改它:
scrcpy --video-bit-rate=2M
scrcpy --video-bit-rate=2000000 # 等效
scrcpy -b 2M # 简洁版本
帧率
捕获帧率可以限制:
scrcpy --max-fps=15
实际捕获帧率可能会打印到控制台:
scrcpy --print-fps
也可以随时使用MOD+i启用或禁用帧率(参见快捷键)。
帧率本质上是可变的:只有当屏幕内容发生变化时才会产生新的帧。例如,如果您的设备以24fps全屏播放视频,那么在scrcpy中不应超过每秒24帧。
编码器
可以在设备上选择多种编解码器。可能的值为h264
(默认)、h265
和av1
:
scrcpy --video-codec=h264 # 默认
scrcpy --video-codec=h265
scrcpy --video-codec=av1
H265可能提供更好的质量,但H264应该提供更低的延迟。AV1编码器目前在当前Android设备上并不常见。
对于高级用法,要将任意参数传递给[MediaFormat
],请检查手册页中的--video-codec-options
或在scrcpy --help
中查看。
编码器
设备上可能有多种编解码器可用。它们可以通过以下命令列出:
scrcpy --list-encoders
有时,默认编解码器可能会出现问题甚至崩溃,因此尝试其他编解码器很有用:
scrcpy --video-codec=h264 --video-encoder='OMX.qcom.video.encoder.avc'
方向
方向可以在三个不同的级别上应用:
- 快捷键 MOD+r请求设备在纵向和横向之间切换(当前运行的应用程序可能会拒绝,如果它不支持请求的方向)。
- --lock-video-orientation
更改镜像方向(从设备发送到计算机的视频方向)。这会影响录制。
- --orientation
在客户端侧应用,并影响显示和录制。对于显示,可以使用快捷键动态更改。
要锁定镜像方向(在捕获侧):
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°顺时针
方向可以分别针对显示和录制设置,如果需要的话,通过--display-orientation
和--record-orientation
。
旋转是通过将显示转换写入MP4或MKV目标文件来应用于录制的文件。翻转不受支持,因此在录制时只允许前四个值。
裁剪
设备屏幕可以被裁剪以仅镜像屏幕的一部分。
例如,要仅镜像Oculus Go的一个眼睛:
scrcpy --crop=1224:1440:0:0 # 1224x1440在偏移量(0,0)
这些值以设备的自然方向表示(手机为纵向,平板电脑为横向)。
如果还指定了--max-size
,则在裁剪后应用大小调整。
显示
如果Android设备上有多个显示屏,可以选择要镜像的显示屏:
scrcpy --display-id=1
显示ID列表可以通过以下命令获取:
scrcpy --list-displays
如果设备运行至少Android 10,次级显示屏可能只能通过控制,否则它会作为只读镜像显示。
缓冲
默认情况下没有视频缓冲,以获得尽可能低的延迟。
可以通过添加缓冲区来延迟视频流并补偿抖动以实现更平滑的播放(参见 #2464)。
配置可以独立于显示、v4l2 源和音频播放进行。
scrcpy --display-buffer=50 # 为显示添加50ms缓冲
scrcpy --v4l2-buffer=300 # 为 v4l2 源添加300ms缓冲
scrcpy --audio-buffer=200 # 设置音频播放的200ms缓冲
它们可以同时应用:
scrcpy --display-buffer=50 --v4l2-buffer=300
无播放
可以在不播放视频或音频的情况下捕获Android设备。当录制或启用v4l2时,这个选项很有用:
scrcpy --v4l2-sink=/dev/video2 --no-playback
scrcpy --record=file.mkv --no-playback
# 使用 Ctrl+C 中断
也可以分别禁用视频和音频播放:
# 将视频发送到 V4L2 源,但不播放,但保持音频播放
scrcpy --v4l2-sink=/dev/video2 --no-video-playback
记录视频和音频,但仅播放视频
scrcpy --record=file.mkv --no-audio-playback
无视频
要完全禁用视频转发,以便仅转发音频,请执行以下操作:
scrcpy --no-video
Video4Linux
请查看专用的Video4Linux页面。