即使在重新启动后,如何将 v4l2 USB 摄像机绑定到相同的设备名称?

IBr*_*IBr 7 linux video

我在一台 PC 上有 3 个 USB 摄像头,其中一个摄像头未使用,可以忽略。我需要强制将两个相同的相机映射到常量设备名称(如/dev/video1/dev/video2)。相机不应该改变它们的顺序(比如相机 1 安装为video1和相机 2video2断开连接后它们应该是相同的顺序而不是 camera1 --> /dev/video2, camera2 --> /dev/video1。如何使这个设置工作?

我会将相机输出提供给Gstreamer。相机使用v4l2uvc驱动程序接口。有问题的 Linux 发行版是Archlinux,相机 - 一些罗技网络摄像头。

Pat*_*que 12

我建议您/dev使用udevUSB 相机的独特属性(序列号?端口号?)自动创建符号链接。请参阅有关 udev 规则的教程(也应适用于 Arch)。或者也许这个教程更清楚

您可以使用以下方法获取设备的属性列表:

sudo udevadm info --query=all --name=/dev/video1
Run Code Online (Sandbox Code Playgroud)

然后

sudo udevadm info --query=all --name=/dev/video2
Run Code Online (Sandbox Code Playgroud)

找出不同之处并在其中创建一个.rules文件/etc/udev/rules.d(例如,您可以将其99-myvideocards.rules用作文件名);假设您想使用序列号,您会得到一个如下所示的规则集:

ATTRS{ID_SERIAL}=="0123456789", SYMLINK+="myfirstvideocard"
ATTRS{ID_SERIAL}=="1234567890", SYMLINK+="mysecondvideocard"
Run Code Online (Sandbox Code Playgroud)

拔下/重新插入设备后(或重新启动后),您将获得/dev/myfirstvideocard并且/dev/mysecondvideocard始终指向相同的设备。

  • 谢谢,我尝试了,它有效,我将用你的答案“关闭”问题;D但与此同时,我发现 v4l 已经有像 `/dev/v4l/by-id/usb-046d_0819_92E84F10-video-index0` 这样的符号链接 (2认同)

IBr*_*IBr 5

Patrice Levesque 方法工作正常,但我发现 Linux 中已经存在/dev/v4l/by-id/usb-046d_0819_92E84F10-video-index0文件夹中的符号链接,/dev/v4l/by-id/因此无需执行任何操作,如果程序可以接受/dev/videoX.