播放两个重叠的独立波形文件所需的 API 配置/调用是什么? 我尝试这样做,但出现资源繁忙错误。一些解决问题的建议将非常有帮助。
以下是来自第二个 wavefile 的 snd_pcm_prepare()
的错误信息
"Device or resource busy"
最佳答案
您可以配置 ALSA 的 dmix
插件以允许多个应用程序共享输入/输出设备。
执行此操作的示例配置如下:
pcm.dmixed {
type dmix
ipc_key 1024
ipc_key_add_uid 0
slave.pcm "hw:0,0"
}
pcm.dsnooped {
type dsnoop
ipc_key 1025
slave.pcm "hw:0,0"
}
pcm.duplex {
type asym
playback.pcm "dmixed"
capture.pcm "dsnooped"
}
# Instruct ALSA to use pcm.duplex as the default device
pcm.!default {
type plug
slave.pcm "duplex"
}
ctl.!default {
type hw
card 0
}
这会执行以下操作:
- 使用
dmix
插件创建一个新设备,该插件允许多个应用共享输出流 - 使用
dsnoop
创建另一个,它对输入流做同样的事情 - 将它们合并到一个新的
duplex
设备中,该设备将使用asym
插件支持输入和输出 - 告诉 ALSA 使用新的
duplex
设备作为默认设备 - 告诉 ALSA 使用
hw:0
来控制默认设备(alsamixer 等)
将其粘贴到 ~/.asoundrc
或 /etc/asound.conf
中,您就可以开始了。
有关详细信息,请参阅 http://www.alsa-project.org/main/index.php/Asoundrc#Software_mixing .
关于c - 阿尔萨 API : How to play two wave files simultaneously?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14398573/