如何重新启动 /dev/video

如何重新启动 /dev/video

我正在按以下方式创建网络摄像头源:

  • 使用这个 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无需重启即可轻松修复视频设备:

  1. 移除设备:sudo rmmod v4l2loopback
  2. 读取设备:sudo modprobe v4l2loopback video_nr=2 exclusive_caps=1

不过,我建议修复 Python,以便它不会中断,或者在不重置视频设备的情况下将其重新配置为工作状态。

相关内容