我需要更改python脚本上使用的音频设备。我使用的是alsaaudio,根据这个http://pyalsaaudio.sourceforge.net/libalsaaudio.html,这只需在创建PCM设备时输入卡的名称即可。当我在Python上打字时
import alsaaudio
alsaaudio.cards()我得到了
[u'Intel', u'Q9000']但将PCM对象创建为
alsaaudio.PCM(aa.PCM_CAPTURE, aa.PCM_NORMAL, 'Q9000')它返回
Unknown PCM default:CARD=Q9000我试着修改.asoundrc,将我想要的配置设为默认配置,虽然它可以在Python上使用aplay和arecord,但默认的音频设备仍然是一样的。
在~/.asoundrc上我把
pcm.quicktimeWebCam
{
type hw
card Q9000
}
pcm.internal
{
type hw
card Intel
}
pcm.!default
{
type asym
playback.pcm
{
type plug
slave.pcm "internal"
}
capture.pcm
{
type plug
slave.pcm "quicktimeWebCam"
}
}发布于 2014-11-15 06:28:26
ALSA设备由"hw:x,y“表示,其中x是设备,y是子设备(如果有的话)。它希望卡以"hw:x,y“的形式指定,而不是人类可读的名称。
card_info = {}
for device_number, card_name in enumerate(alsaaudio.cards()):
card_info[card_name] = "hw:%s,0" % device_number
device = alsaaudio.PCM(card=card_info["Q9000"])发布于 2013-08-28 23:44:42
alsaaudio的设备名称有一些未记录在案的怪癖;当您使用普通的card ID (由cards()返回)时,应该有一个接受card参数的default设备。(默认default支持此参数。)
要使用特定设备,请使用plug:internal或plug:quicktimeWebCam。
发布于 2014-05-08 08:07:31
这似乎是一个常见的问题,也是一个报告的bug。混淆之处在于alsaaudio的PCM对象对card参数的期望。正如前面提到的wiki会让您相信它是所需的卡的名称(从技术上讲,ALSA将其称为ID)。只要您将卡名称定义为正在使用的.asoundrc中默认设备配置文件的控件,就是这样。
另一方面,card参数可以接受上面CL提到的整个PCM句柄。正如在提到的bug中所看到的,提交了一个补丁,该补丁将添加此PCM句柄识别功能。在将其添加到模块之前,确定要传递给PCM对象的正确句柄的一个好方法是查看arecord -L的输出(如果查找回放设备名称,则可以使用aplay -L )。
https://stackoverflow.com/questions/17680221
复制相似问题