功能目标

将本地视频文件输出为 虚拟摄像头,让 Zoom、Teams、OBS、Chrome 等应用像使用真实摄像头一样调用视频流。


1️⃣ 安装依赖

Ubuntu / Debian 系统(使用 apt)

sudo apt update
sudo apt install ffmpeg v4l-utils v4l2loopback-dkms

Fedora 系统(使用 dnf)

安装基本工具

sudo dnf install ffmpeg v4l-utils

安装 v4l2loopback

方法 1:使用 RPM Fusion(推荐)

sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install kmod-v4l2loopback v4l2loopback-utils

方法 2:源码编译

sudo dnf install kernel-devel gcc make git
git clone https://github.com/umlaeute/v4l2loopback.git
cd v4l2loopback
make
sudo make install

2️⃣ 创建虚拟摄像头

sudo modprobe v4l2loopback devices=1 video_nr=10 card_label="VirtualCam" exclusive_caps=1

说明:

  • devices=1:创建 1 个虚拟摄像头
  • video_nr=10:虚拟摄像头设备路径 /dev/video10
  • card_label:摄像头名称
  • exclusive_caps=1:兼容 Zoom、Chrome 等应用

验证设备:

ls /dev/video*
v4l2-ctl --list-devices

3️⃣ 将视频输出到虚拟摄像头

假设视频文件为 video.mp4:

ffmpeg -re -i video.mp4 \
       -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video10

参数说明:

  • -re:按视频原始帧率播放
  • -f v4l2:输出到 V4L2 设备
  • -vcodec rawvideo -pix_fmt yuv420p:确保兼容大多数应用

4️⃣ 可选优化

循环播放

ffmpeg -stream_loop -1 -re -i video.mp4 \
       -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video10

调整分辨率

ffmpeg -re -i video.mp4 -vf scale=1280:720 \
       -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video10

指定帧率

ffmpeg -re -i video.mp4 -r 30 \
       -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video10

5️⃣ 测试虚拟摄像头

  • 使用 ffplay:
ffplay /dev/video10
  • 在 Zoom、Teams、OBS、Chrome 等应用中选择摄像头 VirtualCam。

6️⃣ 小贴士

  1. Fedora 内核更新后,可能需要重新加载 v4l2loopback 或使用 akmod-v4l2loopback 自动重建模块。
  2. Chrome/Zoom 等应用无法识别虚拟摄像头时,请确保 exclusive_caps=1 已设置。
  3. 无限循环播放适合做演示或虚拟会议背景。