Qt 5.15迁Qt6.4.1时QAudioSink启动报错‘Failed to setup resampler’
Qt 6.4.1音频输出报错“Failed to setup resampler”的解决方法
问题根源
Qt 6中QAudioSink的行为与Qt 5的QAudioOutput存在关键差异:Qt 5允许直接调用无参的start()启动音频输出,框架会自动处理默认数据源;但Qt 6的QAudioSink要求启动时必须绑定一个有效的QIODevice,否则会触发重采样器初始化失败的错误。
解决方案
创建一个空的QIODevice(例如QBuffer)并打开为只读模式,将其作为参数传入start()方法:
修正后的代码
#include <QCoreApplication> #include <QAudioDevice> #include <QMediaDevices> #include <QAudioSink> #include <QBuffer> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QAudioDevice device = QMediaDevices::defaultAudioOutput(); QAudioFormat format = device.preferredFormat(); QAudioSink *output = new QAudioSink(device, format); // 创建空缓冲区作为音频数据源 QBuffer *audioBuffer = new QBuffer(); audioBuffer->open(QIODevice::ReadOnly); // 传入数据源启动音频输出 output->start(audioBuffer); return a.exec(); }
补充说明
如果后续需要输出实际音频数据,只需向QBuffer中写入符合QAudioFormat要求的音频数据即可;若仅需初始化音频输出设备而不播放数据,空的QBuffer就能满足需求。
内容的提问来源于stack exchange,提问作者Jason C
相关产品推荐
相关产品推荐

