FFmpeg 带有 V4L2,用于 Linux 上的虚拟网络摄像头,可裁剪、过滤真正的 uvc 网络摄像头

FFmpeg 带有 V4L2,用于 Linux 上的虚拟网络摄像头,可裁剪、过滤真正的 uvc 网络摄像头

想知道是否可以使用支持 v4l2 的 ffmpeg(例如在 Ubuntu Linux 上)来创建虚拟网络摄像头设备,该设备可呈现真实网络摄像头输出的转换版本。这个想法是虚拟网络摄像头设备随后可以被流行的视频会议应用程序(如 Teams、Zoom、Google Talk 等)使用。

我正在研究的转换的性质是裁剪一些边缘、应用覆盖文本、应用色度键控、背景替换等。我正在寻找一种系统开销最小的机制,这就是为什么考虑 ffmpeg。

答案1

是的,这是可能的。

  1. 获取v4l2loopback模块
    apt-get install v4l2loopback-dkms
    
  2. 加载模块
    modprobe v4l2loopback exclusive_caps=1 card_label="Virtual Webcam" max_buffers=2
    
  3. 运行ffmpeg(1)阅读实际/物理网络摄像头和写作“虚拟”网络摄像头。例如,我有一个旧网络摄像头,仅支持 640 像素 × 480 像素 @ 30.00 FPS(以及其他模式),但我喜欢将其裁剪为 16:10 的宽高比:
    ffmpeg -f v4l2 -i /dev/video0 -pix_fmt yuyv422 -vf crop=h=400 -f v4l2 /dev/video1
    
    注意参数的顺序。例如,这里必须指定‑pix_fmt (任何)‑vf
  4. 如果您更改了分辨率:
    v4l2-ctl -d /dev/video1 --set-fmt-video=width=640,height=400,pixelformat=yuyv422
    
  5. 使用应用程序中的虚拟相机来庆祝。

我认为不值得一提,但为了完整性:apt‑get(8)modprobe(8)需要以root特权执行,而ffmpeg(1)v4l2-ctl(1)以普通用户身份运行通常(也)是该团体的成员video团体的所有权/dev/video*

附言:一些重复的问题/答案是可以的,特别是如果你不能合并它们,因为它们在不同的网站上。

相关内容