Почему PortAudio плохо работает с другими аудиопрограммами или как это сделать?

StackOverflow https://stackoverflow.com/questions/2351884

  •  23-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

Вам необходимо выбрать устройство с именем «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 в параметре потока.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top