4

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

我在 Windows 7 上使用带有 MingGW 4.8 32 位的 Qt 5.1.0。

错误信息:

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();
}
4

3 回答 3

5

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

请参阅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

于 2014-04-03T21:43:47.400 回答
0

我在 Linux 下运行的 Qt5.5 中遇到了同样的问题。使用他们的维护工具升级到 Qt5.5.1 后问题消失了。

于 2015-10-23T16:36:11.330 回答
0

我也在这个问题上苦苦挣扎,最终通过使用 QT Creator 中的 MS Visual Studio 编译器让它工作,就像 Fernando Pelliccioni 建议的那样。

步骤是:

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

- 安装 Visual Studio 2013

-在 Qt Creator 中转到 Projects->Manage Kits 并添加 msvc2013

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

于 2015-11-03T22:16:01.180 回答