You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:31:24