如何在Qt5(Qt4迁移)中播放声音? [英] How to play sound in Qt5 (Qt4 migration)?

查看:260
本文介绍了如何在Qt5(Qt4迁移)中播放声音?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我曾经在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中播放诸如声音之类的媒体文件?

and it all worked fine. But now Phonon is not supported in Qt 5. So I wonder - how can I play media files such as sound in Qt5?

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

Using WebKit? (It is entirely possible but looks kind of bad from many points of view)

推荐答案

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

The Qt developers started to reduce their efforts on Phonon integration already during the later versions of Qt4, focussing on the Qt Multimedia and Qt Mobility modules instead. Though they did still support Phonon.

正如您所说,从Qt5开始,不再支持Phonon.因此,请改用 Qt多媒体,尤其是

As you say, as of Qt5, Phonon is no longer supported. So look into Qt Multimedia instead, especially QAudioOutput.

其文档中所列. ,播放音频文件看起来像这样:

As listed within their documentation under "Detailed Description", playing an audio file looks something like this:

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

这篇关于如何在Qt5(Qt4迁移)中播放声音?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆