如何在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不支持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);
相关文章:
- 如何在Ubuntu中使用cmake设置qt4
- 将项目从 Debian 8 Xenomai 2.x 迁移到 Debain 9 Xenomai 3.x
- 从 MFC C++ 6.0 应用程序迁移到 VS 2005
- 将预处理器配置定义迁移到 constexpr,而不会造成内存膨胀
- 如何在 MSVC C++中迁移 x64 的 x86 代码
- "acceptor"在从TCP迁移到UDP时不是"boost::asio::ip::udp
- 将代码从 32 位迁移到 64 位时出现问题 Visual Studio 2010
- 如何在新设计中迁移需要几个额外参数的函数
- 如何将 C 函数指针迁移到C++?
- WDK 如何迁移到 v4 打印机驱动程序
- 迁移到 Visual Studio 2015 时 ATL 不起作用
- 从 calloc() 迁移到 new
- 如何将C++项目从 32 位迁移到 64 位以支持 MAC OS 10.14(莫哈韦)?
- 将 CMakeLists QT4 更新为 QT5
- 从固定函数迁移到 GLSL OpenGL:我应该如何修改我的视图(lookAt)矩阵和透视矩阵?
- 禁用 Qt5 代码中的旧(Qt4 样式)信号槽语法
- C++从多线程 CPU 程序迁移到 GPU
- VS2013的Qt4到Qt5迁移链接器警告(和错误)
- 从Qt4.x(Ubuntu Linux)迁移到Qt5.1(Windows 7)
- 如何在Qt5中播放声音(Qt4迁移)