![Alsa 无法将记录传输到播放,资源繁忙 EDIROL UA-101](https://linux22.com/image/160715/Alsa%20%E6%97%A0%E6%B3%95%E5%B0%86%E8%AE%B0%E5%BD%95%E4%BC%A0%E8%BE%93%E5%88%B0%E6%92%AD%E6%94%BE%EF%BC%8C%E8%B5%84%E6%BA%90%E7%B9%81%E5%BF%99%20EDIROL%20UA-101.png)
我正在尝试在同一个 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 声卡出于某种原因只允许播放或录音,但不能同时允许两者。