我正在尝试在同一个 USB 声卡上同时获取播放和捕获流。截至目前,我的asoundrc
文件如下所示:
pcm.!default {
type plug
slave {
pcm ua101
}
}
pcm.ua101 {
type hw
card 1
device 0
}
ctl.ua101 {
type hw
card 1
device 0
}
aplay
并arecord
分别工作正常,但在尝试通过管道传输arecord
到时会弹出资源繁忙错误aplay
。
此行为可以在 C 代码中重现。 Alsa 有办法初始化双工流吗?
作为替代解决方案,是否可以在 .asoundrc 中创建两个不同的设备,一个用于播放,一个用于捕获,并以这种方式实现系统?
答案1
Alsa 本身可以很好地处理双工流,我尝试使用我的 USB 声卡:
arecord -D plughw:CARD=UA25EX | aplay -D plughw:CARD=UA25EX -
就可以了(没有什么特别的asoundrc
)。
因此,我假设您的 USB 声卡出于某种原因只允许播放或录音,但不能同时允许两者。