2016-04-19 6 views
0

Ich bin eine App auf meinem Raspberry-Pi 3 auf Ubuntu-MATE. Ich benutze C++ auf code :: blocks mit SDL und SDL_Mixer, um mp3-Dateien abzuspielen (ich benutze immer noch die v1.2 der SDL-Bibliotheken).Initialisierung SDL_Mixer gibt den Fehler "Kann PulseAudio Stream nicht einrichten"

ich keinen Fehler, wenn ich SDL init, aber wenn ich SDL_mixer mit dieser Zeile init:

Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 1, 1024) 

Es gibt -1, so erhalte ich die Fehlermeldung mit der Mix_GetError() -Methode, und es gibt mir eine Nachricht "Kann PulseAudio-Stream nicht einrichten".

Ich bin mir nicht bewusst, was PulseAudio ist, also nach ein paar Untersuchungen habe ich verstanden, dass es für Netzwerk-Streaming-Audio-Streams verwendet wird. Warum wird dieses Modul bei der Initialisierung der Lib benötigt, und gibt es einen Weg, es zu umgehen? Ich habe nicht vor, Netzwerkfunktionen in meiner App zu verwenden.

Auch überprüfte ich mit einem "sudo apt-get install pulseaudio" um sicherzustellen, dass ich nicht ein paar Libs fehlt, aber mein Paket-Manager scheint darauf hinzudeuten, dass ich das neueste Update haben ...

Irgendwelche Hinweise helfen würde mir wirklich viel !

Dank

+0

bitte posten mehr Code. diese einzelne Zeile ist nicht genug, um das Audiosystem zu initialisieren – xaxxon

+0

@ G.Vernier können Sie den Code für 'SDL_Init' posten? – Rakete1111

Antwort

0

ich beschlossen, es endlich selbst ... es war ein fricking Tippfehler. Ich schrieb 444100 anstelle von 44100 für die Frequenz init Parameter:/

Alles jetzt richtig geladen (für SDL, habe ich gerade SDL_INIT_EVERYTHING für diejenigen, die gefragt). Übrigens verwende ich nur SDL, um SDL_Mixer zu verwenden; Ich nehme an, dass SDL_Mixer nicht als eigenständiges Programm ausgeführt werden kann. Welches Modul kann ich also in SDL laden, um nur die Grundlagen zu initiieren?

Auch jetzt bin ich neugierig: Warum benötigt SDL_Mixer PulseAudio zu init?

Danke

+1

'SDL_INIT_AUDIO'. Es muss irgendwo Ton ausgegeben werden. Auf Linux ist das übliche Kernaudiosystem entweder ALSA oder OSS (fast schon ausgestorben), aber in der Vergangenheit gibt es normalerweise einen Sounddämon, der Sounds von mehreren Programmen mischt und an ALSA sendet. Heutzutage ist dieser Sound-Daemon normalerweise pulseaudio. Sie können SDL bitten, direkt an ALSA zu senden, aber es kann fehlschlagen (z. B. pulseaudio, das bereits ausschließlich Gerät hält). – keltar