QAudioDecoder - 找不到服务

时间:2014-04-01 10:37:05

标签: c++ qt qtmultimedia

我正在尝试使用QAudioDecoder类解码 .wav 文件。即使我通过添加将QtMultimedia模块包含到我的 .pro 文件中 QT += multimedia我收到的错误是找不到QAudioDecoder的服务。我无法看到问题在哪里。

我在Windows 7上使用Qt 5.1.0和MingGW 4.8 32位。

错误讯息:

defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.audiodecode"

.pro 文件:

QT       += core
QT       += multimedia
QT       -= gui

TARGET = test
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app
SOURCES += main.cpp

文件:

#include <QCoreApplication>
#include <QAudioDecoder>
#include <QAudioBuffer>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QString pathToFile = "C:/Users/Mateusz/Documents/Szkola/Sound Processing/Lab1/artificial/easy/506Hz.wav";

    QAudioDecoder decoder;
    decoder.setSourceFilename(pathToFile);

    decoder.start();
    while(decoder.bufferAvailable()) {
        QAudioBuffer buffer = decoder.read();
        qDebug() << "Buffer size: " << buffer.byteCount();
    }

    return a.exec();
}

3 个答案:

答案 0 :(得分:4)

多媒体模块使用每个平台(或编译器)上不同的插件。

请参阅http://qt-project.org/wiki/Qt_Multimedia_Backends

在Windows上,您有DirectShow和MediaFoundation(WMF)。 只有WMF插件才能实现音频解码功能。 WMF插件仅适用于MSVC编译器。

请参阅http://qt-project.org/doc/qt-5.1/qtmultimedia/platform-notes-windows.html

答案 1 :(得分:0)

我在Linux下运行的Qt5.5中遇到了同样的问题。 使用MaintenanceTool升级到Qt5.5.1后问题消失了。

答案 2 :(得分:0)

我也在努力解决这个问题,最后通过在QT Creator中使用MS visual studio编译器来完成工作,就像Fernando Pelliccioni建议的那样。

步骤是:

- 使用Qt MaintenanceTool添加对msvc2013的支持

- 安装Visual Studio 2013

- 在Qt Creator中转到Projects-&gt; Manage Kits并添加msvc2013

- 建立并运行。现在QAudioDecoder工作。