我正在按以下方式创建网络摄像头源:
- 使用这个 Python3 库:https://github.com/Flashs/virtualvideo
- 加上已
v4l2loopback-utils
安装(不是 100% 确定是否需要) - 启用视频设备
sudo modprobe v4l2loopback video_nr=2 exclusive_caps=1
这为 提供了虚拟供稿/dev/video2
。
几次运行良好(我可以在视频会议工具中选择此网络摄像头源),但有时我无法/dev/video2
再初始化。错误是:
Couldn't write image to ffmpeg, error output of ffmpeg:
ffmpeg version 6.0-6ubuntu1 Copyright (c) 2000-2023 the FFmpeg developers
...
Input #0, rawvideo, from 'pipe:0':
Duration: N/A, start: 0.000000, bitrate: 221184 kb/s
Stream #0:0: Video: rawvideo (BGR[24] / 0x18524742), bgr24, 1280x720, 221184 kb/s, 10 tbr, 10 tbn
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> rawvideo (native))
[video4linux2,v4l2 @ 0x55fea92ea8c0] ioctl(VIDIOC_G_FMT): Invalid argument
[out#0/video4linux2,v4l2 @ 0x55fea92ea780] Could not write header (incorrect codec parameters ?): Invalid argument
[vost#0:0/rawvideo @ 0x55fea92eaf40] Error initializing output stream:
Conversion failed!
这可以通过重新启动来解决,但是我想知道是否有办法在不重新启动的情况下修复视频设备。
(警告:我不知道自己在做什么。)
答案1
v4l2loopback
无需重启即可轻松修复视频设备:
- 移除设备:
sudo rmmod v4l2loopback
- 读取设备:
sudo modprobe v4l2loopback video_nr=2 exclusive_caps=1
不过,我建议修复 Python,以便它不会中断,或者在不重置视频设备的情况下将其重新配置为工作状态。