当前位置:首页 >> 新活动速递

基于Qt C++音频录制实战

一、概述 音频录制技术已深度融入生活与工作场景,从手机录音到智能家居语音交互都离不开它。Qt 作为跨平台 C++ 开发框架,凭借高效 API 与

adminadmin

一、概述

音频录制技术已深度融入生活与工作场景,从手机录音到智能家居语音交互都离不开它。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文件


Top