要約:
・ カメラのパスはコロコロ変わるので、パスを使ってカメラは特定できない。
-------------------------------------------------->※追記:実はLinux標準の機能で指定できる!
・ 代わりに、根こそぎ/dev/video**
を走査しながら、カメラがあるパス毎にカメラのシリアル番号を追跡すれば、接続中のカメラがどのパスで使われているか特定できる。
・ 任意のプログラミング言語で、別プロセスでudevadm
を走らせて、結果を受け取ればOK。
OSが認識するカメラのパス
基本的にカメラを指した順番(通電した順番)で決まるそうです。なので、指しっぱなしにしていても、カメラが複数あると再起動するたびに番号がかわるので、番号を固定することは事実上不可能です。また、抜き差しすると加算されていく(気まぐれな?)ようで、私も固定できなくて悩みました。
私の思う、質問の先にある実現したいこと
恐らく番号を固定したい、という希望の先に「同じカメラを使っているのだから、プログラムを使って物理的に同じカメラを同じように毎度認識させたい」というものがあると思います。
カメラの識別方法
ですので、「番号を固定する方法」ではなく、「同じカメラを同じように判別する方法」を書きます。
コマンドラインからUSBのシリアル番号を調べられるので、任意の言語から「別プロセスでudevadmを指定pathの引数付きで走らせ、返り値を得る」ことで、特定のパスにあるカメラのシリアル番号(どのパスにどのカメラがあるか)を得られます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。