v4l2loopback-ctl set-fps 或 set-caps 会导致错误,例如无法解析或 /sys/devices/virtual/video4linux 没有这样的文件或目录?

v4l2loopback-ctl set-fps 或 set-caps 会导致错误,例如无法解析或 /sys/devices/virtual/video4linux 没有这样的文件或目录?

可能相关的信息:Ubuntu 20.04、Logitech 1080p USB 网络摄像头、NVidia GTX 1080

我安装了 v4l2loopback 并且使用它来工作一种解决方案但它要求我在参数中指定 /dev/video5 作为设备。我尝试使用 v4l2-ctl -d /dev/video5 ,它似乎需要,但是当我尝试使用命令强制 fps 或 set-caps 时,我遇到了奇怪的错误,例如:

v4l2loopback-ctl set-fps /dev/video5 24
can't parse device

或者

v4l2loopback-ctl set-caps "image/jpeg, width=1280, height=720, fps=30/1" /dev/video5
cat: /sys/devices/virtual/video4linux/video5/format: No such file or directory
unknown control 'keep_format'

没有 video4linux 目录,不知道为什么需要它在那里。

其他信息:

v4l2-ctl --list-devices
v4l2loopback (platform:v4l2loopback-000):
    /dev/video9

Rift Sensor: CV1 External Camer (usb-0000:00:14.0-10):
    /dev/video3
    /dev/video4

Rift Sensor: CV1 External Camer (usb-0000:00:14.0-6.3):
    /dev/video0
    /dev/video1

UVC Camera (046d:0821) (usb-0000:00:14.0-9.1):
    /dev/video5
    /dev/video6

Rift Sensor: CV1 External Camer (usb-0000:00:14.0-9.4.2):
    /dev/video7
    /dev/video8

dmesg | grep -i "Camera"
[4.637790] input: UVC Camera (046d:0821) as /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9.1/1-9.1:1.2/input/input21

答案1

set-fps

你的语法是错误的(所有释放v4l2loopback-ctl截至 2020 年 12 月 18 日的版本):

$ v4l2loopback-ctl -h | grep set-fps
     set-fps <FPS> /dev/videoX  Set device fps (if format is already

所以应该是:v4l2loopback-ctl set-fps 24 /dev/video5

上游自述文件已交换 fps 和设备 - 但这是因为下一个(目前尚未发布)版本v4l2loopback将交换参数;并且上游存储库已经包含这些更改并相应地更新了其文档。

set-caps

如果你没有/sys/devices/virtual/video4linux/video5/目录,那么你就没有名为 的环回设备/dev/video5

效用v4l2loopback-ctl仅有的可与环回设备一起使用。它不是在任意视频设备上设置帧速率和格式的通用工具。所以:

  • 确保驱动程序已加载
  • 确保以创建设备的方式加载驱动程序dev/video5

像这样的事情应该可以解决问题(在使用新的参数集加载驱动程序之前,您必须卸载驱动程序):

$ sudo rmmod v4l2loopback
$ sudo modprobe v4l2loopback video_nr=5

除此之外:该v4l2loopback-ctl脚本使用简单的 gstreamer 管道将格式强制传输到设备上。不幸的是,这个管道无法生成有效的image/jpeg流,所以现在如果你想强制格式为 JPEG,你只能靠自己了……

相关内容