你可以使用QAudioRecorder类来实现在Qt中录音并保存到本地文件。

首先,在你的Qt项目中包含以下头文件:

#include <QAudioRecorder>
#include <QUrl>

然后,在你的代码中创建一个QAudioRecorder对象,并设置输出文件的名称和格式:

QAudioRecorder recorder;
recorder.setOutputLocation(QUrl::fromLocalFile("录音文件路径/录音文件名.wav"));

接下来,设置录音的音频编码和质量:

QAudioEncoderSettings audioSettings;
audioSettings.setCodec("audio/wav");
audioSettings.setQuality(QMultimedia::HighQuality);
recorder.setAudioSettings(audioSettings);

然后,开始录音,并设置录音的持续时间:

recorder.record();
QTimer::singleShot(3000, [&recorder]() {
    recorder.stop();
});

最后,你可以在录音结束后进行一些处理,比如显示一个消息框:

connect(&recorder, &QAudioRecorder::stateChanged, [&](QAudioRecorder::State newState) {
    if (newState == QAudioRecorder::StoppedState) {
        QMessageBox::information(nullptr, "录音结束", "录音已保存到文件");
    }
});

完整的示例代码如下:

#include <QApplication>
#include <QAudioRecorder>
#include <QUrl>
#include <QTimer>
#include <QMessageBox>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QAudioRecorder recorder;
    recorder.setOutputLocation(QUrl::fromLocalFile("录音文件路径/录音文件名.wav"));

    QAudioEncoderSettings audioSettings;
    audioSettings.setCodec("audio/wav");
    audioSettings.setQuality(QMultimedia::HighQuality);
    recorder.setAudioSettings(audioSettings);

    recorder.record();
    QTimer::singleShot(3000, [&recorder]() {
        recorder.stop();
    });

    QObject::connect(&recorder, &QAudioRecorder::stateChanged, [&](QAudioRecorder::State newState) {
        if (newState == QAudioRecorder::StoppedState) {
            QMessageBox::information(nullptr, "录音结束", "录音已保存到文件");
        }
    });

    return a.exec();
}

将"录音文件路径/录音文件名.wav"替换为你想要保存录音的本地文件路径和文件名。然后,编译并运行这个代码,它将在录音结束后保存录音文件到指定的路径


原文地址: https://www.cveoy.top/t/topic/ioTG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录