首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更换pyalsaaudio上的声卡

更换pyalsaaudio上的声卡
EN

Stack Overflow用户
提问于 2013-07-16 23:03:04
回答 3查看 3.9K关注 0票数 2

我需要更改python脚本上使用的音频设备。我使用的是alsaaudio,根据这个http://pyalsaaudio.sourceforge.net/libalsaaudio.html,这只需在创建PCM设备时输入卡的名称即可。当我在Python上打字时

代码语言:javascript
复制
import alsaaudio
alsaaudio.cards()

我得到了

代码语言:javascript
复制
[u'Intel', u'Q9000']

但将PCM对象创建为

代码语言:javascript
复制
alsaaudio.PCM(aa.PCM_CAPTURE, aa.PCM_NORMAL, 'Q9000')

它返回

代码语言:javascript
复制
Unknown PCM default:CARD=Q9000

我试着修改.asoundrc,将我想要的配置设为默认配置,虽然它可以在Python上使用aplay和arecord,但默认的音频设备仍然是一样的。

在~/.asoundrc上我把

代码语言:javascript
复制
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"
    }
}
EN

回答 3

Stack Overflow用户

发布于 2014-11-15 06:28:26

ALSA设备由"hw:x,y“表示,其中x是设备,y是子设备(如果有的话)。它希望卡以"hw:x,y“的形式指定,而不是人类可读的名称。

代码语言:javascript
复制
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"])
票数 3
EN

Stack Overflow用户

发布于 2013-08-28 23:44:42

alsaaudio的设备名称有一些未记录在案的怪癖;当您使用普通的card ID (由cards()返回)时,应该有一个接受card参数的default设备。(默认default支持此参数。)

要使用特定设备,请使用plug:internalplug:quicktimeWebCam

票数 0
EN

Stack Overflow用户

发布于 2014-05-08 08:07:31

这似乎是一个常见的问题,也是一个报告的bug。混淆之处在于alsaaudio的PCM对象对card参数的期望。正如前面提到的wiki会让您相信它是所需的卡的名称(从技术上讲,ALSA将其称为ID)。只要您将卡名称定义为正在使用的.asoundrc中默认设备配置文件的控件,就是这样。

另一方面,card参数可以接受上面CL提到的整个PCM句柄。正如在提到的bug中所看到的,提交了一个补丁,该补丁将添加此PCM句柄识别功能。在将其添加到模块之前,确定要传递给PCM对象的正确句柄的一个好方法是查看arecord -L的输出(如果查找回放设备名称,则可以使用aplay -L )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17680221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档