繁体   English   中英

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

[英]How to play sound in Qt5 (Qt4 migration)?

在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不支持声子。所以我想知道-如何在Qt5中播放诸如声音之类的媒体文件?

使用WebKit? (这是完全可能的,但是从许多角度来看,这似乎是不好的)

Qt开发人员已经开始在Qt4的更高版本中减少对Phonon集成的工作,而专注于Qt多媒体和Qt Mobility模块。 尽管他们仍然支持声子。

如您所说,从Qt5开始,不再支持Phonon。 因此,请改用Qt Multimedia ,尤其是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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM