2017-09-16 53 views
0

我有一個簡單的使用SFML的C++程序來播放.​​wav聲音文件。它看起來像這樣:SFML不播放任何聲音,但沒有錯誤

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

我它運行在Ubuntu 16.04 LTS,並與

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

我已經安裝了SFML用它編譯apt-get的一個包。當我運行./sfml-app時,它輸出「Hello World」,但我聽不到任何聲音。我嘗試調高音量,重新啓動電腦,插入耳機等。當我通過雙擊播放聲音文件時,它會發出嘟嘟聲。

感謝您的幫助

回答

2

爲什麼不播放聲音,即使你的代碼是完全正確的可能有很多原因。
但是,它不是,因爲sf :: Sound :: play 異步在另一個線程(如聲明here)中播放聲音,但您的應用程序完成速度非常快,因此使其他線程無法真正播放大部分指定的聲音緩衝區。

所以爲了有至少聽到任何的理論機會,我會建議權退出之前插入一些指令阻塞主線程,就像

std::cin.get(); 

+0

非常感謝,這立即工作 – YpsilonZett