如何分离ALSA驱动程序?

时间:2013-03-27 13:55:31

标签: python linux audio usb alsa

我正在开发一个需要使用超过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驱动程序?

非常感谢。

0 个答案:

没有答案