Qt 录音程序实现:简单易懂的示例代码
当然,我可以为您提供一个使用 Qt 框架编写的简单录音程序。以下是一个示例代码:
#include <QCoreApplication>
#include <QAudioDeviceInfo>
#include <QAudioInput>
#include <QFile>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 设置录音设备参数
QAudioFormat format;
format.setSampleRate(44100); // 采样率为 44100Hz
format.setChannelCount(2); // 双声道
format.setSampleSize(16); // 采样大小为 16 位
format.setCodec('audio/pcm'); // 使用 PCM 编码
format.setByteOrder(QAudioFormat::LittleEndian); // 小端字节序
format.setSampleType(QAudioFormat::SignedInt); // 有符号整型
// 获取默认录音设备
QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice();
if (!info.isFormatSupported(format)) {
qWarning() << '录音设备不支持所需的格式';
return a.exec();
}
// 创建录音缓冲区
QByteArray buffer;
QBuffer output(&buffer);
output.open(QIODevice::WriteOnly);
// 创建音频输入对象,并设置参数
QAudioInput* audioInput = new QAudioInput(format);
audioInput->start(&output);
qDebug() << '开始录音...(按 Ctrl+C 结束录音)';
// 按下 Ctrl+C 停止录音
QObject::connect(&a, &QCoreApplication::aboutToQuit, [&](){
qDebug() << '录音结束';
audioInput->stop();
output.close();
// 保存录音为文件
QString fileName = 'record.pcm';
QFile outputFile(fileName);
if (outputFile.open(QIODevice::WriteOnly)) {
outputFile.write(buffer);
outputFile.close();
qDebug() << '录音已保存为:' << fileName;
} else {
qWarning() << '无法保存录音';
}
a.quit();
});
return a.exec();
}
在这个示例中,我们使用了 Qt 的 QAudioInput
类来实现录音的功能。程序首先设置了录音设备的参数,包括采样率、声道数、采样大小等。然后,它获取默认的录音设备,并验证所需的格式是否被支持。接下来,创建了一个 QBuffer
对象作为录音缓冲区,并将其与音频输入对象连接起来。最后,程序进入事件循环,并在按下 Ctrl+C 时停止录音,关闭缓冲区,并将录音保存为 PCM 格式的文件。
请注意,这只是一个简单的示例,用于演示如何使用 Qt 框架实现录音功能。您可以根据您的具体需求进行修改和扩展。

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