SFML不播放任何声音,但没有错误
问题描述:
我有一个简单的使用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”,但我听不到任何声音。我尝试调高音量,重新启动电脑,插入耳机等。当我通过双击播放声音文件时,它会发出嘟嘟声。
感谢您的帮助
答
为什么不播放声音,即使你的代码是完全正确的可能有很多原因。
但是,它不是,因为sf :: Sound :: play 异步在另一个线程(如声明here)中播放声音,但您的应用程序完成速度非常快,因此使其他线程无法真正播放大部分指定的声音缓冲区。
所以为了有至少听到任何的理论机会,我会建议权退出之前插入一些指令阻塞主线程,就像
std::cin.get();
。
非常感谢,这立即工作 – YpsilonZett