2017-09-16 7 views
0

J'ai un simple programme C++ utilisant SFML pour lire un fichier son .wav. Il ressemble à ceci:SFML ne lit aucun son, mais aucune erreur

#include <SFML/Audio.hpp> 
#include <iostream> 


int main() 
{ 
    sf::SoundBuffer buffer; 
    if (!buffer.loadFromFile("beep-01a.wav")) 
     return -1; 

    sf::Sound sound; 
    sound.setBuffer(buffer); 
    sound.play(); 
    std::cout << "Hello World" << std::endl; 
    return 0; 
} 

Je suis en cours d'exécution sur ubuntu 16.04 LTS et la compilation avec

$ g++ -c main.cpp 
$ g++ main.o -o sfml-app -lsfml-audio 
$ ./sfml-app 

J'ai installé SFML avec apt-get comme un paquet. Quand je lance le fichier ./sfml-app, il affiche "Hello World", mais je n'entends rien. J'ai essayé d'augmenter le volume, de redémarrer mon ordinateur, de mettre des écouteurs, etc. Lorsque je joue le fichier son en double-cliquant dessus, il émet un bip sonore.

Merci pour votre aide

Répondre

2

Il pourrait y avoir plusieurs raisons pour lesquelles aucun son est joué, même si votre code était tout à fait correct.
Cependant, ce n'est pas le cas, car sf :: Sound :: play joue le son de manière asynchrone dans un autre thread (comme indiqué here) mais votre application se termine assez rapidement, donnant ainsi à l'autre thread aucune chance réelle de jouer beaucoup de le tampon sonore spécifié.

Ainsi, afin d'avoir au moins une chance théorique de rien entendre, je suggère d'insérer quelques instructions pour bloquer le thread principal, comme

std::cin.get(); 

juste avant de quitter.

+0

Merci beaucoup, cela a immédiatement fonctionné – YpsilonZett