我正在通过以下方式创建网络摄像头源:
- 使用这个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!
这可以通过重新启动来修复,但是我想知道是否有一种方法可以在不重新启动的情况下修复视频设备。
(警告:我不知道我在做什么。)
v4l2loopback
无需重新启动即可轻松修复视频设备:sudo rmmod v4l2loopback
sudo modprobe v4l2loopback video_nr=2 exclusive_caps=1
不过,我建议修复 Python,以便它不会中断或将视频设备重新配置回工作状态,而无需重置它。