基于Qt C++音频录制实战
一、概述
音频录制技术已深度融入生活与工作场景,从手机录音到智能家居语音交互都离不开它。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文件
浙公网安备 33010602011771号