如何在Qt5(Qt4迁移)中播放声音?

时间:2013-01-12 18:06:40

标签: c++ qt multimedia phonon qt5

在Qt4中,我曾经使用过

QT += multimedia phonon
//...
#include <Phonon>
//...
        Phonon::MediaObject *mediaObject = Phonon::createPlayer(Phonon::NoCategory, Phonon::MediaSource(QUrl("./assets/audio/window_appear.wav")));
        //   "\"" + Qdir().absolutePath() + "/audio/click.wav" + "\""
        mediaObject->play();

这一切都很好。但现在Phonon is not supported in Qt 5.所以我想知道 - 如何在Qt5中播放声音等媒体文件?

使用WebKit? (这完全可能,但从许多角度来看看都很糟糕)

1 个答案:

答案 0 :(得分:5)

Qt开发人员在Qt4的后续版本中开始减少他们对Phonon集成的努力,转而专注于Qt多媒体和Qt Mobility模块。虽然他们仍然支持Phonon。

如你所说,从Qt5起,Phonon不再受支持了。因此,请查看Qt Multimedia,尤其是QAudioOutput

their documentation中&#34;详细说明&#34;中所列,播放音频文件如下所示:

QFile inputFile;     // class member.
QAudioOutput* audio; // class member.
inputFile.setFileName("/tmp/test.raw");
inputFile.open(QIODevice::ReadOnly);

QAudioFormat format;
// Set up the format, eg.
format.setFrequency(8000);
format.setChannels(1);
format.setSampleSize(8);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::UnSignedInt);

QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
if (!info.isFormatSupported(format)) {
    qWarning()<<"raw audio format not supported by backend, cannot play audio.";
    return;
}

audio = new QAudioOutput(format, this);

connect(audio,SIGNAL(stateChanged(QAudio::State)),SLOT(finishedPlaying(QAudio::State)));
 audio->start(&inputFile);
相关问题