Domanda

Sto cercando di scrivere un'applicazione audio utilizzando PortAudio, ma se tutti gli altri programmi audio (di solito Firefox) sono in esecuzione nel momento in cui si tenta di eseguire il mio programma, ottengo il seguente errore:

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.

Ovviamente, questo rende il mio programma abbastanza inutile dato che non funzionerà se un altro programma sta utilizzando il suono. C'è un modo per aggirare questo o non dovrebbe mi basta usare PortAudio?

È stato utile?

Soluzione

È necessario scegliere un dispositivo chiamato "impulso" per PortAudio di lavorare con PulseAudio, che è il server audio utilizzato per la condivisione scheda audio sui più grandi distribuzioni Linux al giorno d'oggi. Il messaggio di errore suggerisce che si sta cercando di usare il / dev / dsp interfaccia OSS, che non supporta la condivisione di carta a tutti.

È possibile utilizzare il codice come questo della messa in vendita dei dispositivi:

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

Poi fornire il giusto numero di Openstream all'interno parametro flusso.

Si noti che è necessario PortAudio v19. Il v18 più vecchio supportato solo OSS.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top