«Не удалось настроить ресемплер» при запуске QAudioSink

Я переношу некоторый код 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), кажется, работает нормально. Что мне здесь не хватает?

Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
0
0
159
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Судя по всему, это ошибка в Qt 6.4.1 в Windows, где, как обнаружил пользователь johnco3 в этом сообщении на форуме, по какой-то причине QAudioSink ищет DLL с именем «mfplat.dll.dll», когда она должна искать для «mfplat.dll» (добавляется дополнительный суффикс «.dll»).

Правильно названная версия этой DLL находится в системном каталоге Windows (например, C:\Windows\System32\mfplat.dll), поэтому есть несколько обходных путей, пока ошибка не будет исправлена:

  1. Вернитесь к Qt 6.4.0, очевидно, это новая проблема в 6.4.1, или
  2. Скопируйте mfplat.dll куда-нибудь по пути DLL, затем переименуйте его в «mfplat.dll.dll»:
    1. Либо скопируйте его в каталог исполняемого файла приложения и переименуйте его там, либо
    2. Создайте где-нибудь папку, скопируйте и переименуйте ее туда, затем добавьте эту папку в переменную окружения PATH.

Это несколько глупый баг, но увы. По крайней мере, существует обходной путь, и его можно легко отменить, когда ошибка в конечном итоге будет исправлена.

Смотрите также:

Другие вопросы по теме