听起来没有在我的代码上播放
Sounds not playing on my code
我正在学习 SFML 库 2.2 版,但无法播放声音。我编译 运行 ubuntu 14.04 上的程序。这是我的程序
#include "SFML/Audio.hpp"
#include <stdio.h>
#include <iostream>
using namespace std;
using namespace sf;
SoundBuffer buffer;
Sound audio;
int main(int argc, char* argv[]) {
if(buffer.loadFromFile(argv[1]))
cout << "Sounds Loaded" << endl;
audio.setBuffer(buffer);
audio.setVolume(100);
audio.play();
cout << "Yay!" << endl;
return 0;
}
这是我的编译代码:
g++ testaudio.cpp -I <My Directory>/SFML-2.2/include/ -L <My Directory>/SFML-2.2/lib/ -lsfml-audio -lsfml-system -o testaudio
我的编译没有错误,但是当我运行程序时,声音不出来。我检查了我的音量,但没有任何变化。
我怀疑audio.play()
是异步的。所以你的程序在声音开始播放后立即退出。
只需在程序退出前执行此操作即可:
audio.play();
cout << "Yay!" << endl;
sleep(9999); // sleep until CTRL+C is pressed
return 0;
SFML sound tutorials 表示声音和音乐在单独的线程中播放。可能发生的情况是您的程序运行,开始在单独的线程上播放声音,但主线程保持 运行 并到达 main
函数的末尾并退出,从而终止您的程序。简而言之:您的程序退出速度如此之快,您甚至听不到任何声音播放。
尝试调用 sf::sleep()
让您的程序有时间在退出前播放歌曲。
我正在学习 SFML 库 2.2 版,但无法播放声音。我编译 运行 ubuntu 14.04 上的程序。这是我的程序
#include "SFML/Audio.hpp"
#include <stdio.h>
#include <iostream>
using namespace std;
using namespace sf;
SoundBuffer buffer;
Sound audio;
int main(int argc, char* argv[]) {
if(buffer.loadFromFile(argv[1]))
cout << "Sounds Loaded" << endl;
audio.setBuffer(buffer);
audio.setVolume(100);
audio.play();
cout << "Yay!" << endl;
return 0;
}
这是我的编译代码:
g++ testaudio.cpp -I <My Directory>/SFML-2.2/include/ -L <My Directory>/SFML-2.2/lib/ -lsfml-audio -lsfml-system -o testaudio
我的编译没有错误,但是当我运行程序时,声音不出来。我检查了我的音量,但没有任何变化。
我怀疑audio.play()
是异步的。所以你的程序在声音开始播放后立即退出。
只需在程序退出前执行此操作即可:
audio.play();
cout << "Yay!" << endl;
sleep(9999); // sleep until CTRL+C is pressed
return 0;
SFML sound tutorials 表示声音和音乐在单独的线程中播放。可能发生的情况是您的程序运行,开始在单独的线程上播放声音,但主线程保持 运行 并到达 main
函数的末尾并退出,从而终止您的程序。简而言之:您的程序退出速度如此之快,您甚至听不到任何声音播放。
尝试调用 sf::sleep()
让您的程序有时间在退出前播放歌曲。