Por que o Portaudio não joga bem com outros programas de áudio ou como posso fazê -lo?

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

  •  23-09-2019
  •  | 
  •  

Pergunta

Estou tentando escrever um aplicativo de áudio usando o Portaudio, mas se algum outro programa de áudio (geralmente o Firefox) estiver em execução no momento em que tento executar meu programa, recebo o seguinte erro:

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.

Obviamente, isso torna meu programa bastante inútil, pois não funcionará se outro programa estiver usando o som. Existe uma maneira de contornar isso ou eu simplesmente não deveria usar o Portaudio?

Foi útil?

Solução

Você precisa escolher um dispositivo chamado "Pulse" para o Portaudio trabalhar com o Pulseaudio, que é o servidor de som usado para compartilhamento de placas de som nas maiores distribuições Linux atualmente. A mensagem de erro sugere que está tentando usar a interface OSS /DEV /DSP, que não suporta compartilhamento de cartões.

Você pode usar código como este para listar os dispositivos:

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);
}

Em seguida, forneça o número certo para abrir o parâmetro de fluxo.

Observe que você precisa de Portaudio v19. O V18 mais antigo apoiou apenas OSS.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top