実現したいこと
2台のウェブカメラと1台のマイクを使ってそれぞれの入力を別のプログラムで動かしたい
発生した問題
PCにUSBデバイス(マイク付きwebカメラ2台・USBマイク)を複数台刺したときに,デバイスが認識する順番によってプログラム内で指定するオーディオカードの番号が変わる.
環境
Ubuntu22.04
総評
基本はこれでうまくいくが,一部デバイスで上手くいかないこともあり.(高いデバイスの方が対応しているイメージ)
デバイスの指定によりプログラムの安定化が増すのでマイクを複数使用する場合はぜひやっておきたい.
解決編
方針
デバイスによってオーディオカードの番号をあらかじめ指定することで,固定化する
方法
- デバイスの情報(使用するドライバ名?)を調べる
$ cat /proc/asound/modules
0 snd_usb_audio
1 snd_usb_audio
2 snd_usb_audio
9 snd_hda_intel
10 snd_hda_intel
- 必要に応じてデバイスのVendorIDを調べる
$ lsusb
//ID[VendorID][ProductID]となっている.
// ↓ココ↓
Bus 005 Device 005: ID 046d:094c Logitech, Inc. Brio 100
Bus 005 Device 006: ID 0411:02da BUFFALO INC. (formerly MelCo., Inc.) USB 2.0 Camera
Bus 005 Device 007: ID 0ecb:205f C-Media Electronics Inc. JBL Quantum Stream
- /etc/modprobe.d/alsa-base.confを編集する
$ sudo vim /etc/modprobe.d/alsa-base.conf
// options [ドライバ名] index=[指定したいデバイス番号]の形式で書き込む
options snd_hda_intel index=9,10
//使用するドライバ名が同じ機種の場合 vid=0x[デバイスのVendorID]で指定できる
options snd_usb_audio index=0 vid=0x0ecb
options snd_usb_audio index=4 vid=0x046d
- 再起動等
- arecord -l コマンドで反映されたかどうか番号の確認
発生した問題
原因不明だが一部この方法でうまくいかないデバイスが存在する.
手元のデバイスのうち成否は以下の通り
-
成功
-
失敗
- バッファローwebカメラ
- papalook webカメラ(現時点でAmazonリンク無し)