希望实现以下目标:
- 从命令行将默认麦克风从模拟麦克风更改为 logitech 920C 网络摄像头麦克风(或反之)。
- 希望能够使用供应商 ID 或产品 ID 来实现这一点,而不是使用丑陋而复杂的设备名称。我的脚本编写技能很初级,所以我对此一无所知。
- 如果这不起作用,请重置相机的 USB 连接,以便重新发现它。
背景
我有一个信息亭系统,每次启动时都会重新启动,并通过 Web 服务器上的配置文件进行配置。目前,我有两个麦克风连接到信息亭;一个模拟麦克风插入麦克风端口,另一个是带有内置麦克风的罗技 920C。通常,内置麦克风是默认设置。我可以从配置文件中传入命令,我希望能够使用此方法选择启动后哪个麦克风处于活动状态。系统识别两个麦克风,但罗技似乎没有将任何声音传递到系统中,即使在 pavucontrol 中对其进行操作后也是如此。我能够在全新启动后使其工作的唯一方法是物理断开连接并重新连接,此时它就可以按预期运行。
我尝试过的方法
我尝试了多种方法,试图将默认麦克风从模拟麦克风更改为罗技麦克风。以下代码可以更改默认设备,但不会改变麦克风的功能。
$ pacmd "set-default-source device-name-of-logitech"
我可以使用以下代码静音、取消静音并更改源的音量,但它对功能没有影响
$ pactl set-source-mute 0 1
$ pactl set-source-volume 0 50%
我还尝试使用以下代码重置 USB 设备。这样做时,logitech 将从 pavucontrol 中消失,然后重新出现,但仍然没有任何功能结果来使麦克风发送音频
sudo sh -c "echo 0 > /sys/bus/usb/devices/1-4.6/authorized"
sudo sh -c "echo 1 > /sys/bus/usb/devices/1-4.6/authorized"
似乎唯一能成功且反复使用的方法就是物理断开/重新连接相机与计算机。这有点像黑客行为,但如果我能从命令行重现该操作,我也许能够让它工作,尽管不太优雅。
此外,如果能够通过引用 vendorID 和 productID 来发送这些命令,那就太好了,因为如果物理连接在不同系统之间略有不同,我并不总是确定设备将具有什么索引。如前所述,我的命令行脚本技能很差,因此任何帮助我都会很感激。
坦率地说,任何帮助都会受到赞赏...提前感谢。