跳转到内容

Scrcpy Video4Linux

Scrcpy Video4Linux 视频输出到 v4l2loopback 作为虚拟摄像头

Section titled “Scrcpy Video4Linux 视频输出到 v4l2loopback 作为虚拟摄像头”

在 Linux 上,可以将视频流发送到一个 v4l2 回环设备,这样任意支持 v4l2 的工具都能像打开摄像头一样打开 Android 设备。

需要安装 v4l2loopback 模块:

Terminal window
sudo apt install v4l2loopback-dkms

创建一个 v4l2 设备:

Terminal window
sudo modprobe v4l2loopback

这会在 /dev/videoN 创建一个新的视频设备,其中 N 为整数(可通过更多选项创建多个设备或指定设备 ID)。

如果在 Chrome/WebRTC 中检测设备遇到问题,可以尝试 exclusive_caps 模式:

sudo modprobe v4l2loopback exclusive_caps=1

列出已启用的设备:

Terminal window
# 需要 v4l-utils 软件包
v4l2-ctl --list-devices
# 更简单但可能足够
ls /dev/video*

使用 v4l2 sink 启动 scrcpy

Terminal window
scrcpy --v4l2-sink=/dev/videoN
scrcpy --v4l2-sink=/dev/videoN --no-video-playback # disable playback window

(将 N 替换为设备 ID,可用 ls /dev/video* 查看)

启用后,可以用支持 v4l2 的工具打开你的视频流:

Terminal window
ffplay -i /dev/videoN
vlc v4l2:///dev/videoN # VLC might add some buffering delay

例如,你可以在 OBS 或你的视频会议工具中采集该视频。

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

类似于视频显示,也可以为 v4l2 流添加缓冲以进行延迟:

Terminal window
scrcpy --v4l2-buffer=300 # add 300ms buffering for v4l2 sink