2010-12-17 341 views
11

如何使用Qt播放聲音?我嘗試這樣做:如何使用Qt播放聲音

QSound::play("sounds/croack.wav"); 

QSound的不上我的Ubuntu的工作(似乎它需要NAS,雖然之後我安裝了它,它仍然無法正常工作)。是否有簡單的單行Qt解決方案,還是需要拋出SDL或其他內容?

+0

我試圖在Ubuntu,Windows和Mac QSound的,他們都工作得很好。 – 2017-08-04 10:44:29

回答

3

好吧我有一些進展,我可以玩ogg文件,但不是wav(不知道爲什麼)。

#include <QtGui> 
#include <phonon/phonon> 

int main(int argc, char* argv[]) { 
    QApplication app(argc, argv); 
    app.setApplicationName("bla"); 
    Phonon::MediaObject *mediaObject = Phonon::createPlayer(Phonon::NoCategory, Phonon::MediaSource("sounds/4.wav")); 
    mediaObject->play(); 
    return app.exec(); 
} 

編譯g++ ``pkg-config QtGui phonon --cflags --libs``

+0

我真的很感激有這樣一個最小的例子,它終於讓我得到它的工作。謝謝! – daveagp 2015-01-19 23:17:28

5

試着用聲子。它比QSound更強大。這是一個播放視頻文件的最簡單的例子。如果你省略了VideoWidget,它應該只播放音頻。

#include <QApplication> 
#include <QUrl> 

#include <phonon/audiooutput.h> 
#include <phonon/mediaobject.h> 
#include <phonon/mediasource.h> 
#include <phonon/videowidget.h> 

using namespace Phonon; 

int main(int argc, char** argv) { 
    QApplication app(argc, argv); 
    app.setApplicationName(QLatin1String("testphonon")); 
    const QUrl url = QUrl(QLatin1String("file:///somepath/somefile")); 
    MediaSource src(url); 
    MediaObject obj; 
    obj.setCurrentSource(src); 
    VideoWidget video; 
    video.show(); 
    AudioOutput audio(VideoCategory); 
    Phonon::createPath(&obj, &video); 
    Phonon::createPath(&obj, &audio); 
    obj.play(); 
    return app.exec(); 
} 
+0

我試過了,但這在我的Ubuntu上不起作用,沒有聲音播放。 – 2010-12-17 22:43:29

+0

@Helltone:Phonon只是gstreamer等原生後端的包裝。如果聲子不起作用,那麼它可能是後端的問題(如果一種格式可行,但另一種通常不行),或者聲子配置不正確。檢查一些使用gstreamer的視頻播放器是否有相同的問題。 – 2010-12-18 15:20:53

+0

是聲子的標準嗎?我應該包括哪些標題? – 2010-12-19 12:32:55

4

您有幾種選擇:

  • QSound的(這是壞無法修復 - 不使用它)
  • 聲子(會做你想要什麼,但我發現它是「太多」,特別是當你只是想播放幾個通知聲音)
  • 其他圖書館,如SDL。
+0

你能舉一個剛剛播放聲音的例子嗎? – 2010-12-17 22:44:22

4

在QT5中,Phonon已從官方版本中刪除。 QSound在很大程度上起作用,但請注意,QSound不支持播放所有采樣率的波形文件(因爲我發現困難)。 QT5 QSound does not play all wave files

如果你使用QSound,你可以像你一樣玩一個波;但確保您正在從磁盤播放文件;不是QT資源。由於資源尚未得到支持。您可以將資源中的wave文件即時複製到硬盤中,然後播放它;這正是我在應用程序中所做的。

3

可以使用QMediaPlayer兩個文件格式,MP3播放和.wav

#include <QtMultimedia/QMediaPlayer> 

QMediaPlayer *player = new QMediaPlayer; 
player->setMedia(QUrl::fromLocalFile("/path")); 
player->setVolume(50); 
player->play(); 
+1

但請確保爲MP3安裝了平臺編解碼器。 – Trilarion 2017-07-28 22:29:19