【问题标题】:"Failed to setup resampler" when starting QAudioSink启动 QAudioSink 时“无法设置重采样器”
【发布时间】:2022-11-19 22:03:14
【问题描述】:

我正在从 Qt 5.15 6.4.1 移植一些 QtMultimedia 代码。以下程序在 Windows 上使用 Qt 6.4.1 构建时:

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

    QCoreApplication a(argc, argv);

    QAudioDevice device = QMediaDevices::defaultAudioOutput();
    QAudioFormat format = device.preferredFormat();
    QAudioSink *output = new QAudioSink(device, format);
    output->start();

    return a.exec();

}

无法启动音频输出,打印以下消息:

qt.multimedia.audiooutput: Failed to setup resampler

Qt5 中的等效代码(使用QAudioDeviceInfoQAudioOutput)似乎运行良好。我在这里错过了什么?

【问题讨论】:

    标签: c++ windows qt6 qtmultimedia qt6.4.1


    【解决方案1】:

    显然,it's a bug in Qt 6.4.1 on Windows,正如用户 johnco3 在该论坛帖子中发现的那样,出于某种原因,QAudioSink 正在寻找一个名为“mfplat.dll.dll”的 DLL,而它应该寻找“mfplat.dll”(它添加一个额外的“.dll”后缀)。

    此 DLL 的正确命名版本位于 Windows 系统目录中(例如 C:WindowsSystem32mfplat.dll),因此在错误修复之前有几个解决方法:

    1. 回到Qt 6.4.0,显然是6.4.1的新问题,或者
    2. 将 mfplat.dll 复制到 DLL 路径中的某个位置,然后将其重命名为“mfplat.dll.dll”:
      1. 将其复制到应用程序可执行文件的目录并在那里重命名,或者
      2. 在某处创建一些文件夹,在那里复制并重命名,然后将该文件夹添加到 PATH 环境变量。

        这是一个有点愚蠢的错误,但是唉。至少存在解决方法,并且在最终修复错误时可以轻松撤消。

        也可以看看:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-11
      • 2022-11-08
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      相关资源
      最近更新 更多