可能相关的信息: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,你只能靠自己了……