2

我正在尝试使用 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?

4

1 回答 1

4

您需要为 PortAudio 选择一个名为“pulse”的设备来与 PulseAudio 一起工作,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);
}

然后在流参数中向 OpenStream 提供正确的数字。

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

于 2010-02-28T17:39:59.877 回答