【问题标题】:Sounds not playing on my code听起来我的代码没有播放
【发布时间】:2016-02-01 13:49:52
【问题描述】:

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

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

【问题讨论】:

    标签: c++ audio sfml


    【解决方案1】:

    SFML sound tutorials 表示声音和音乐在单独的线程中播放。可能发生的情况是您的程序运行,开始在单独的线程上播放声音,但主线程继续运行并到达main 函数的末尾并退出,杀死您的程序。简而言之:您的程序退出速度如此之快,以至于您甚至听不到任何声音播放。

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 2019-09-02
        相关资源
        最近更新 更多