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