如何使用Qt播放声音

问题描述:

如何使用Qt播放声音?我尝试这样做:如何使用Qt播放声音

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

QSound的不上我的Ubuntu的工作(似乎它需要NAS,虽然之后我安装了它,它仍然无法正常工作)。是否有简单的单行Qt解决方案,还是需要抛出SDL或其他内容?

+0

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

好吧我有一些进展,我可以玩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

试着用声子。它比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

您有几种选择:

  • QSound的(这是坏无法修复 - 不使用它)
  • 声子(会做你想要什么,但我发现它是“太多”,特别是当你只是想播放几个通知声音)
  • 其他图书馆,如SDL。
+0

你能举一个刚刚播放声音的例子吗? – 2010-12-17 22:44:22

在QT5中,Phonon已从官方版本中删除。 QSound在很大程度上起作用,但请注意,QSound不支持播放所有采样率的波形文件(因为我发现困难)。 QT5 QSound does not play all wave files

如果你使用QSound,你可以像你一样玩一个波;但确保您正在从磁盘播放文件;不是QT资源。由于资源尚未得到支持。您可以将资源中的wave文件即时复制到硬盘中,然后播放它;这正是我在应用程序中所做的。

可以使用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