视频

来源

默认情况下,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(默认)、h265av1

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页面。