我正在将一些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中的等效代码(使用QAudioDeviceInfo
和QAudioOutput
)看起来运行得很好。
1条答案
按热度按时间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最终被修复时,可以很容易地撤销。
另请参阅: