听起来没有在我的代码上播放

Sounds not playing on my code

本文关键字:代码 播放 我的 听起来      更新时间:2023-10-16

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

我的编译没有错误,但当我运行程序时,声音不会出来。我检查了音量,但什么都没变。

SFML声音教程说声音和音乐在一个单独的线程中播放。可能发生的情况是,你的程序运行,开始在一个单独的线程上播放声音,但主线程继续运行,并到达main函数的末尾并退出,从而杀死你的程序。简而言之:你的程序退出得太快了,你甚至听不到任何声音在播放。

在退出之前,请尝试调用sf::sleep(),让您的程序有时间播放歌曲。

我怀疑audio.play()是异步的。因此,您的程序在声音开始播放后立即退出。

只需在程序退出前执行以下操作:

audio.play();
cout << "Yay!" << endl;
sleep(9999); // sleep until CTRL+C is pressed
return 0;