安装 v4l2loopback

安装 v4l2loopback

我想将视频发送到 Ubuntu 上的网络摄像头设备,该设备位于 /dev/video0 上

我已经看到了这个向其发送桌面的命令,但是有没有办法向其发送视频?

ffmpeg -f x11grab -r 15 -s 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0

我应该提到我特别想使用 ffmpeg 命令。

答案1

你可以这样做v4l2loopback。首先你需要安装它:

安装 v4l2loopback

方法 1:从存储库安装 v4l2loopback

sudo apt install v4l2loopback-dkms
sudo modprobe v4l2loopback

这很容易,但是旧版本的 v4l2loopback 有一些已知的错误,所以如果遇到任何问题,请考虑编译它。

方法2:编译v4l2loopback

如果它不在你的 Ubuntu 版本的存储库中,或者你想要最新版本,你可以编译它:

sudo apt-get install build-essential checkinstall
wget https://github.com/umlaeute/v4l2loopback/archive/main.zip
unzip main.zip
cd v4l2loopback-main
make
sudo checkinstall --pkgname=v4l2loopback --pkgversion="$(date +%Y%m%d%H%M)-git" --default
sudo modprobe v4l2loopback

卸载

如果你想删除你编译的包:

sudo apt-get remove v4l2loopback

例子

请注意,实际video数量可能会有所不同,具体取决于现有设备是否已在使用/dev/video0检查ls /dev/video*或的输出v4l2-ctl --list-devices

桌面到虚拟相机

现在运行ffmpeg。桌面示例使用x11grab

ffmpeg -f x11grab -framerate 15 -video_size 1280x720 -i :0.0 -f v4l2 /dev/video0

视频文件(MP4)到虚拟摄像头

ffmpeg -re -i input.mp4 -map 0:v -f v4l2 /dev/video0

图像到虚拟相机

ffmpeg -re -loop 1 -i input.jpg -vf format=yuv420p -f v4l2 /dev/video0

网络摄像头 → ffmpeg → 虚拟网络摄像头

添加文字

绘制文本筛选:

ffmpeg -f v4l2 -i /dev/video0 -vf "drawtext=text='Hello World':fontsize=12:fontcolor=white:font=Arial:x=w-tw-10:y=h-th-10,format=yuv420p" -f v4l2 /dev/video1

如何定位 drawtext 文本?

绿屏/色度键/替换背景

使用色度键覆盖, 和格式过滤器:

ffmpeg -re -i background.jpg -f v4l2 -i /dev/video0 -filter_complex "[1]chromakey=color=#326964:similarity=0.07:blend=0.02[fg];[0][fg]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2:format=auto,format=yuv420p" -f v4l2 /dev/video1

如何定位覆盖?

预览ffplay

ffplay /dev/video0

常见错误

  • 无法打开 V4L2 设备‘/dev/video0’
  • 无法打开 /dev/video0:没有此文件或目录
  • yuvj422p 的未知 V4L2 像素格式等效项

这个答案寻找解决方案。

相关内容