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

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

我在一台 PC 上有 3 个 USB 摄像头,其中一个摄像头将不使用,可以忽略。我需要强制将两个相同的相机映射到恒定的设备名称(例如/dev/video1/dev/video2)。相机不应更改其顺序(假设相机 1 安装为video1相机 2,video2断开连接后它们的顺序应相同,而不是相机 1 --> /dev/video2、相机 2 --> /dev/video1。如何使此设置起作用?

我将把相机输出提供给Gstreamer。相机正在使用v4l2紫外线驱动程序接口。有问题的 Linux 发行版是ArchLinux、摄像头 - 一些 Logitech 网络摄像头。

答案1

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

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

sudo udevadm info --query=all --name=/dev/video1

然后

sudo udevadm info --query=all --name=/dev/video2

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

ATTRS{ID_SERIAL}=="0123456789", SYMLINK+="myfirstvideocard"
ATTRS{ID_SERIAL}=="1234567890", SYMLINK+="mysecondvideocard"

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

答案2

Patrice Levesque 方法工作正常,但我发现 Linux 中已经有符号链接,如/dev/v4l/by-id/usb-046d_0819_92E84F10-video-index0文件夹中/dev/v4l/by-id/,因此如果程序可以接受除/dev/videoX.

相关内容