听起来不是我的代码

时间:2015-11-01 17:02:37

标签: c++ audio sfml

我正在学习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

我的编译没有错误,但是当我运行程序时,声音没有出来。我检查了我的音量,但没有任何改变。

2 个答案:

答案 0 :(得分:3)

我怀疑audio.play()是异步的。所以你的程序在声音开始播放后立即退出。

只需在程序退出之前执行此操作:

audio.play();
cout << "Yay!" << endl;

sleep(9999); // sleep until CTRL+C is pressed
return 0;

答案 1 :(得分:3)

SFML sound tutorials说声音和音乐在一个单独的线程中播放。可能发生的是你的程序运行,开始在一个单独的线程上播放声音,但主线程继续运行并命中main函数的末尾并退出,从而终止程序。简而言之:你的节目如此迅速地退出,你甚至听不到任何声音。

尝试拨打sf::sleep(),让您的节目有时间播放该歌曲,然后退出。