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

How to play sound in Qt5 (Qt4 migration)?

本文关键字:Qt4 迁移 播放声音 Qt5      更新时间:2023-10-16

在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();

,一切正常。但是现在Qt 5不支持Phonon。所以我想知道-我怎么能播放媒体文件,如声音在Qt5?

使用WebKit ?(这是完全有可能的,但从许多角度来看有点糟糕)

Qt开发人员在Qt4的后期版本中已经开始减少他们在Phonon集成上的努力,转而关注Qt多媒体和Qt移动模块。虽然他们仍然支持声子。

正如你所说,从Qt5开始,不再支持声子。所以看看Qt多媒体,尤其是QAudioOutput。

在他们的文档"详细描述"下列出,播放音频文件看起来像这样:

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);