2017-09-16 15 views
0

SFML을 사용하여 .wav 사운드 파일을 재생하는 간단한 C++ 프로그램이 있습니다. 그것은 다음과 같습니다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; 
} 

내가 우분투 16.04 LTS 그것을 실행하고 내가 가진 SFML 설치 한

$ g++ -c main.cpp 
$ g++ main.o -o sfml-app -lsfml-audio 
$ ./sfml-app 

로 컴파일하고있어 패키지로 apt-get을. ./sfml-app을 실행하면 "Hello World"가 출력되지만 아무 것도들을 수 없습니다. 볼륨을 높이거나 컴퓨터를 다시 시작하거나 헤드폰을 넣으려고 시도했습니다. 두 번 클릭하여 사운드 파일을 재생하면 삐 소리가납니다. 당신의 도움에 대한

감사

답변

2

소리는 코드가 완전히 정확 경우에도 재생되지 않는 이유는 여러 가지 이유가있을 수 있습니다.
그러나 sf :: Sound :: play :: 비동기 적으로은 다른 스레드에서 사운드를 재생하지만 (here), 응용 프로그램이 매우 빠르게 끝나기 때문에 다른 스레드에 많은 부분을 재생할 수있는 실제 기회가 주어지지 않습니다. 지정된 사운드 버퍼

그래서 아무 청각의 적어도 이론적 기회를하기 위해, 나는 바로 종료하기 전에

std::cin.get(); 

처럼, 메인 스레드를 차단하는 몇 가지 명령어를 삽입하는 것이 좋습니다 것입니다.

+0

고맙습니다. – YpsilonZett