基于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文件

posted on 2025-04-30 15:36  飘杨......  阅读(129)  评论(0)    收藏  举报