windows 启动QAudioSink时出现“设置重采样器失败”

uplii1fm  于 2022-11-26  发布在  Windows
关注(0)|答案(1)|浏览(538)

我正在将一些QtMultimedia代码从Qt 5.15移植到6.4.1。在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)看起来运行得很好。

mf98qq94

mf98qq941#

显然,it's a bug in Qt 6.4.1 on Windows,其中,正如用户johnco 3在该论坛帖子中发现的,由于某种原因,QAudioSink正在查找名为“mfplat.dll.dll”的DLL,而它应该查找“mfplat.dll”(它添加了一个额外的“.dll”后缀)。
此DLL的正确命名版本位于Windows系统目录(例如,C:\Windows\System32\mfplat.dll)中,因此在修复此错误之前,有几种解决方法:
1.返回Qt 6.4.0,显然这是6.4.1中的新问题,或者
1.将mfplat.dll复制到DLL路径中的某个位置,然后将其重命名为“mfplat.dll.dll”:
1.将其复制到应用程序可执行文件的目录并在该目录中重命名,或者
1.在某处创建某个文件夹,复制并重命名它,然后将该文件夹添加到PATH环境变量中。
这是一个有点愚蠢的bug,但是,唉,至少有一个解决办法,当bug最终被修复时,可以很容易地撤销。
另请参阅:

相关问题