2013-07-14 90 views
2

如果發出信號,我想播放wav文件。爲了測試我創建了一個按鈕,並與在Qt5.0.2中沒有QSoundEffect的聲音輸出

QSoundEffect alarm; 
alarm.setSource(QUrl::fromLocalFile("001.wav")); 
alarm.setLoopCount(QSoundEffect::Infinite); 
alarm.setVolume(1.0f); 
alarm.play(); 

充滿插槽但沒有任何聲音,如果我對按鈕點擊。搜索後,我發現人們與Qt5有相同的問題,但沒有解決方案。

什麼是最好和最簡單的解決方案與Qt5播放未壓縮的聲音文件(WAV)和改變其音量?

編輯:我只是發現它的工作原理,如果我添加例如一個QMessageBox(當此消息框打開時):

QSoundEffect alarm; 
alarm.setSource(QUrl::fromLocalFile("001.wav")); 
alarm.setLoopCount(2); 
alarm.setVolume(0.5f); 
alarm.play(); 

QMessageBox::information(this, "test", "it works"); 

有沒有人對此行爲有解釋?

+0

Windows或OS X? – avignat

+0

兩者都不是;) - Linux –

+0

sudo apt-get install libqt5multimedia5-plugins http://stackoverflow.com/questions/21939759/qaudiodeviceinfo-finds-no-default-audio-device-on-ubuntu – 2016-06-02 01:49:43

回答

0

是的,它是buggie。

我建議你使用另一個音頻轉換器。

我使用了這個網站,並在事後工作。

http://www.online-convert.com

+0

也考慮使用Audacity for快速轉換。導入所有音頻文件並使用「導出多個」功能生成一組Wave文件,這些文件可以通過'QSoundEffect'完美播放。 – phineas

0

你QSoundEffect需要家長正確地工作,其實當你打開這些URL只能是因爲它會把它作爲父母。

0

聲音需要編寫事件循環,例如:

void MainWindow::on_pushButton_4_clicked() 
{ 
    QSoundEffect beep; 
    beep.setSource(QUrl("qrc:/sound/beep-02.wav")); 
    beep.setVolume(1.0f); 
    beep.play(); 
    QEventLoop loop; 
    loop.exec(); 
}