Я переношу некоторый код QtMultimedia с Qt 5.15 на 6.4.1. Следующая программа, собранная с помощью Qt 6.4.1 в Windows:
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
), кажется, работает нормально. Что мне здесь не хватает?
Судя по всему, это ошибка в Qt 6.4.1 в Windows, где, как обнаружил пользователь johnco3 в этом сообщении на форуме, по какой-то причине QAudioSink
ищет DLL с именем «mfplat.dll.dll», когда она должна искать для «mfplat.dll» (добавляется дополнительный суффикс «.dll»).
Правильно названная версия этой DLL находится в системном каталоге Windows (например, C:\Windows\System32\mfplat.dll), поэтому есть несколько обходных путей, пока ошибка не будет исправлена:
Это несколько глупый баг, но увы. По крайней мере, существует обходной путь, и его можно легко отменить, когда ошибка в конечном итоге будет исправлена.
Смотрите также: