Warum spielt das Portaudio nicht gut mit anderen Audio-Programmen oder wie kann ich es?

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

  •  23-09-2019
  •  | 
  •  

Frage

Ich versuche, eine Audio-Anwendung unter Verwendung von Portaudio zu schreiben, aber wenn andere Audio-Programme (in der Regel Firefox) zu der Zeit ausgeführt werden, die ich versuche, mein Programm zu laufen, ich folgende Fehlermeldung erhalten:

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.

Offensichtlich ist dies macht mein Programm ziemlich nutzlos, da es wird nicht funktionieren, wenn ein anderes Programm Ton verwendet. Gibt es eine Möglichkeit, dies zu umgehen, oder soll ich einfach nicht Portaudio?

War es hilfreich?

Lösung

Sie benötigen ein Gerät mit dem Namen „Impuls“ für Portaudio zur Arbeit mit Pulseaudio zu wählen, die der Sound-Server für Soundkarte Sharing auf den größten Linux-Distributionen heutzutage verwendet wird. Die Fehlermeldung deutet darauf hin, dass es versucht, die OSS / dev / dsp-Schnittstelle zu verwenden, das nicht Karte Sharing überhaupt nicht unterstützt.

Sie können für die Auflistung der Geräte Code verwenden:

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

Dann liefert die richtige Anzahl an Openstream im Stream-Parametern.

Beachten Sie, dass müssen Sie Portaudio v19. Der ältere v18 nur OSS unterstützt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top