如何用Qt播放声音

时间:2010-12-17 18:25:09

标签: qt audio

如何用Qt播放声音?我试过这个:

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

QSound在我的ubuntu上不起作用(似乎它需要NAS,虽然在我安装之后它仍然无效)。是否有一个简单的单行Qt解决方案,还是我需要投入SDL或其他东西?

6 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:4)

您有几个选择:

  • QSound(无法修复 - 不要使用它)
  • Phonon(会做你想要的,但我觉得它“太多了”,特别是当你只想发出一些通知声音时)
  • 其他图书馆,如SDL。

答案 2 :(得分:4)

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

如果你使用QSound,你可以像你一样玩波浪;但请确保您正在播放磁盘中的文件;不是QT资源。由于尚未支持资源。您可以动态地将波形文件从资源复制到硬盘驱动器然后播放;这就是我在申请中所做的事情。

答案 3 :(得分:4)

您可以将QMediaPlayer用于文件格式.mp3和.wav

#include <QtMultimedia/QMediaPlayer>

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

答案 4 :(得分: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``编译。

答案 5 :(得分:0)

我也遇到了麻烦,我已经解决了安装此软件包的问题

qtmultimedia5-dev

并包含在“ .pro”文件中

QT += multimedia