web-dev-qa-db-ja.com

再起動後もv4l2 USBカメラを同じデバイス名にバインドする方法は?

1台のPCに3台のUSBカメラがあります。1台のカメラは使用されず、無視してかまいません。 2つの同じカメラを定数のデバイス名(/dev/video1/dev/video2など)に強制的にマッピングする必要があります。カメラの順序は変更しないでください(たとえば、カメラ1をvideo1としてマウントし、カメラ2をvideo2としてマウントした後、カメラ1-> /dev/video2、camera2->ではなく同じ順序にする必要があります。 /dev/video1。この設定を機能させるには?

カメラ出力をGstreamerに送ります。カメラはv4l2およびvcドライバーインターフェイスを使用しています。問題のLinuxディストリビューションはArchlinux、カメラ-一部のLogitechウェブカメラです。

6
IBr

USBカメラの固有のプロパティ(シリアル番号?ポート番号?)を使用して、udevを使用して/devシンボリックリンクを自動作成することをお勧めします。これを見てください(Archにも当てはまります) devルールに関するチュートリアル 。または おそらくこのチュートリアルはより明確です

以下を使用して、デバイスのプロパティのリストを取得できます。

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が表示されます。

11

Patrice Levesqueメソッドは問題なく機能しますが、/dev/v4l/by-id/usb-046d_0819_92E84F10-video-index0フォルダーに/dev/v4l/by-id/としてシンボリックリンクがすでに存在するため、プログラムが/dev/videoX以外の引数を受け入れることができる場合、何もする必要はありません。

4
IBr