1

我正在开发一个需要使用超过 32 个 USB 声卡的应用程序。它是用 python 编写的,我正在 Ubuntu 12.04 上对其进行测试。我正在使用的一些有用的模块是 pyusb 和 pyalsaaudio。

我的问题是 ALSA 驱动程序最多可以处理 32 个声音设备,因此,由于应用程序不需要同时输出到所有设备(由于带宽限制,它也不能),我正在考虑分离USB 卡中的 ALSA 驱动程序,并在需要时附加它(使用某种队列)。

我目前可以识别所有 USB 设备(在安装允许系统处理它们的 3.6 内核之后)并使用 pyusb 获取它们的表示。我试过(用3张卡测试):

>>> import usb.core
>>> import usb.util
>>> cards = []
>>> cards.append(usb.core.find(idVendor=0x0d8c))
>>> cards.append(usb.core.find(idVendor=0x0c76))
>>> cards.append(usb.core.find(idVendor=0x1130))
>>> len(cards)
3
>>> for c in cards:
...     c.detach_kernel_driver(0)
... 

它成功地从aplay -L. 但是,它们仍然出现在 的输出中cat /proc/asound/cards,所以恐怕 ALSA 驱动程序没有被分离(如果你能解释为什么它们从一个而不是另一个消失,这也会有帮助)。

有没有我可以运行的命令(可能来自终端,不一定来自 python)来从特定声卡分离/重新附加 ALSA 驱动程序?

非常感谢。

4

0 回答 0