2017-09-16 113 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