视频4Linux

在Linux上,可以将视频流发送到v4l2环回设备,以便Android设备可以被任何支持v4l2的工具像网络摄像头一样打开。

必须安装模块v4l2loopback

sudo apt install v4l2loopback-dkms

要创建一个v4l2设备:

sudo modprobe v4l2loopback

这将在/dev/videoN中创建一个新的视频设备,其中N是一个整数(更多选项可用于创建多个设备或具有特定ID的设备)。

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

sudo modprobe v4l2loopback exclusive_caps=1

要列出启用的设备:

# 需要v4l-utils包
v4l2-ctl --list-devices

# 简单但可能足够
ls /dev/video*

要使用v4l2接收器启动scrcpy

scrcpy --v4l2-sink=/dev/videoN
scrcpy --v4l2-sink=/dev/videoN --no-video-playback  # 禁用播放窗口

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

一旦启用,您可以使用支持v4l2的工具打开视频流:

ffplay -i /dev/videoN
vlc v4l2:///dev/videoN   # VLC可能会添加一些缓冲延迟

例如,您可以在OBS内捕获视频或在视频会议工具内捕获视频。

缓冲

默认情况下没有视频缓冲,为了获得尽可能低的延迟。

关于视频显示,可以为v4l2流添加缓冲以延迟:

scrcpy --v4l2-buffer=300     # 为v4l2接收器添加300ms缓冲