为什么PortAudio不能很好地与其他音频程序配合使用,或者我如何才能获得它?

时间:2010-02-28 17:35:03

标签: c linux portaudio

我正在尝试使用PortAudio编写音频应用程序,但如果在我尝试运行程序时正在运行任何其他音频程序(通常是Firefox),则会出现以下错误:

PaHost_OpenStream: could not open /dev/dsp for O_WRONLY
PaHost_OpenStream: ERROR - result = -10000
An error occured while using the portaudio stream
Error number: -10000
Error message: Host error.

显然,这使得我的程序非常无用,因为如果另一个程序使用声音它将无法工作。有没有办法解决这个问题,还是我不应该使用PortAudio?

1 个答案:

答案 0 :(得分:4)

你需要为PortAudio选择一个名为“pulse”的设备来使用PulseAudio,它是当今最大的Linux发行版上用于声卡共享的声音服务器。该错误消息表明它正在尝试使用OSS / dev / dsp接口,该接口根本不支持卡共享。

您可以使用此类代码列出设备:

for (int i = 0, end = Pa_GetDeviceCount(); i != end; ++i) {
    PaDeviceInfo const* info = Pa_GetDeviceInfo(i);
    if (!info) continue;
    printf("%d: %s\n", i, info->name);
}

然后在stream参数中为OpenStream提供正确的数字。

请注意,您需要PortAudio v19。较旧的v18仅支持OSS。