2017-09-10 125 views
-1

我試圖使用mp3音樂文件播放器來實現音樂到遊戲,但它無法加載mp3(error1)文件,每次按「E」時它都會打印錯誤(error2)。C++ sfml mp3音樂播放器錯誤

ERROR1:未能打開聲音文件「的music.mp3」無法打開流

誤差2:無法播放音頻流:聲音參數尚未初始化調用初始化第一

代碼:

#include <SFML/Graphics.hpp> 
#include <SFML\Audio.hpp> 
#include <iostream> 

const int WIDTH = 800; 
const int HEIGHT = 800; 
const std::string TITLE = "Game 2000"; 

int main() 
{ 
    sf::RenderWindow window(sf::VideoMode(WIDTH, HEIGHT), TITLE); 
    window.setVerticalSyncEnabled(true); 
    sf::CircleShape shape(400.f); 
    shape.setFillColor(sf::Color::Green); 
    sf::Clock clock; 

    sf::Music music; 

    if (!music.openFromFile("music.mp3")) 
     std::cout << "cannot find music.mp3" << std::endl; 


    while (window.isOpen()) 
    { 
     sf::Time time = clock.getElapsedTime(); 
     sf::Event event; 
     while (window.pollEvent(event)) 
     { 
      if (event.type == sf::Event::Closed) 
       window.close(); 
     } 

     if (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)) 
      window.close(); 
     if (sf::Keyboard::isKeyPressed(sf::Keyboard::E)) 
      music.play(); 

     //std::cout << 1.0f/time.asSeconds() << std::endl; 
     clock.restart().asSeconds(); 

     window.clear(); 
     window.draw(shape); 
     window.display(); 
    } 

    return 0; 
} 

目錄:

enter image description here

編輯

我嘗試了不同的格式,如MP3 WAV OGG, 沒有變化。

在當前目錄下的文件:

enter image description here

+0

請告訴我,如果我做錯了什麼? – MemesTV

+0

請注意,對於較長的音軌(通常音量較大),您可能需要使用'sf :: Music',它支持流音頻,而不是一次加載所有內容。 – Mario

+0

@Mario你沒有看到我目前的代碼。我正在使用sf ::音樂 – MemesTV

回答

1

錯誤2是一個跟進的錯誤,因爲加載不正常失敗(這是,或者在內部SFML一個bug)。

您的實際問題是SFML不支持MP3文件。將文件轉換爲WAV或OGG,然後重試。

+0

我試過wav和ogg,同樣的錯誤。 – MemesTV

+0

@MemesTV這真的很奇怪。如果流存在一些問題(例如文件未找到),則'openFromFile()'應該返回false。如果它不能與ogg/wav一起工作,你確定工作目錄是你的可執行文件的位置嗎? – Mario

+0

看看我的文章的編輯部分。 – MemesTV