2016-04-19 8 views
0

Je suis en train de coder une application sur mon raspberry-pi 3 fonctionnant sous Ubuntu-MATE. J'utilise C++ sur code :: blocks avec SDL et SDL_Mixer pour lire des fichiers mp3 (j'utilise toujours la version 1.2 des librairies SDL).L'initialisation de SDL_Mixer provoque une erreur "Impossible de configurer le flux PulseAudio"

Je reçois pas d'erreur quand j'init SDL, mais quand j'init SDL_mixer avec cette ligne:

Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 1, 1024) 

Il renvoie -1, donc je reçois le message d'erreur avec la méthode Mix_GetError(), et il donne moi un message "Impossible d'installer le flux PulseAudio". Je ne suis pas au courant de ce qu'est PulseAudio, donc après quelques recherches, j'ai compris qu'il est utilisé pour les flux audio en streaming sur le réseau. Pourquoi ce module est-il nécessaire à l'init de la lib, et existe-t-il un moyen de contourner ce problème? Je n'ai pas l'intention d'utiliser les fonctionnalités réseau dans mon application.

Aussi, j'ai vérifié avec un "sudo apt-get install pulseaudio" pour vous assurer que je ne manque pas quelques libs, mais mon gestionnaire de paquets semble indiquer que j'ai la dernière mise à jour ...

Tous les indices peuvent vraiment me aider beaucoup !

Merci

+0

veuillez poster plus de code. cette ligne unique ne suffit pas pour initialiser le système audio – xaxxon

+0

@ G.Vernier pouvez-vous poster le code pour 'SDL_Init'? – Rakete1111

Répondre

0

Je finalement résolu moi-même ... ce fut une faute de frappe fricking. J'ai écrit 444100 au lieu de 44100 pour le paramètre de fréquence init:/

Tout se charge maintenant correctement (pour SDL, je viens d'utiliser SDL_INIT_EVERYTHING pour ceux qui ont demandé). Par ailleurs, je n'utilise que SDL pour utiliser SDL_Mixer; Je suppose que SDL_Mixer ne peut pas fonctionner en tant que autonome, alors quel module puis-je charger en SDL pour init seulement les bases?

Aussi, maintenant je suis curieux: pourquoi SDL_Mixer a besoin de PulseAudio pour init?

Merci

+1

'SDL_INIT_AUDIO'. Il doit sortir le son quelque part. Sur linux, le système audio de base habituel est ALSA ou OSS (presque éteint maintenant), mais historiquement, il y a généralement un démon sonore qui mélange les sons de plusieurs programmes et les envoie à ALSA. De nos jours, ce démon sonore est habituellement pulseaudio. Vous pouvez demander à SDL de se déconnecter directement d'ALSA, mais cela peut échouer (par exemple, pulseaudio tient déjà l'appareil exclusivement). – keltar