基于Qt C++音频录制实战
一、概述 音频录制技术已深度融入生活与工作场景,从手机录音到智能家居语音交互都离不开它。Qt 作为跨平台 C++ 开发框架,凭借高效 API 与
一、概述
音频录制技术已深度融入生活与工作场景,从手机录音到智能家居语音交互都离不开它。Qt 作为跨平台 C++ 开发框架,凭借高效 API 与强兼容性,为音频录制功能开发提供便利。
本博客将带读者掌握 Qt C++ 音频录制核心流程,从概念到实践,助力应对项目开发需求。
二、基本概念
音频录制受采样率、量化位数、声道数等参数影响,数值越高音质越优但文件越大。单声道适合语音,立体声适合音乐。常见格式中,WAV 无损适用于专业场景,MP3 有损压缩便于传输存储,广泛应用于日常音频使用。
采样率:每秒进行多少次采样,常见的有8000、16000、44100、48000等。
量化位数(位深度):每个采样点所使用的二进制数字的位数,表示对声音记录的精细程度。
声道数:单声道、双声道、立体声等
三、代码实例
1.初始化
void AudioRecordThread::Init()
{
Stop();
fmt.setSampleRate(sampleRate);
fmt.setChannelCount(channelCount);
fmt.setSampleSize(sampleSize);
fmt.setSampleType(QAudioFormat::UnSignedInt);
fmt.setByteOrder(QAudioFormat::LittleEndian);
fmt.setCodec("audio/pcm");
input = new QAudioInput(fmt);
io = input->start();
}
2.开始录制并存储
void AudioRecordThread::run()
{
int bufferLength = 1024;
char* buf = new char[bufferLength];
while (isRecord)
{
int br = input->bytesReady();
if (br < bufferLength)continue;
int len = io->read(buf, bufferLength);
fwrite(buf, 1, len, fp);
qDebug() << len << "*";
}
fclose(fp);
}
3.完成代码地址
AudioRecordThread.h 音频录制线程头文件
AudioRecordThread.cpp 音频录制线程cpp文件
AudioRecordWindow.h 音频录制控制窗口头文件
AudioRecordWindow.cpp 音频录制控制窗口cpp文件


