Почему PortAudio плохо воспроизводится с другими аудиопрограммами или как мне его получить? - PullRequest
2 голосов
/ 28 февраля 2010

Я пытаюсь написать аудио-приложение, используя 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 Ответ

4 голосов
/ 28 февраля 2010

Вам необходимо выбрать устройство под названием «pulse» для PortAudio для работы с 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 в параметре stream.

Обратите внимание, что вам нужен PortAudio v19. Более старая версия 18 поддерживала только OSS.

...