Linux下Qt使用QAudio相关类进行音频采集,使用Windows下的Matlab软件播放

Qt集成的QAudio相关类可以很方便的进行音频采集,主要涉及到以下几个类:

#include <QAudioInput>
#include <QAudioDeviceInfo>

在.pro工程文件中增加:

QT       +=  multimedia

这样才能找到这两个类

另外,保存文件使用到:

#include <QFile>

基本步骤:

1 获取音频输入列表

QList<QAudioDeviceInfo> audioDevice;                // 可用音频设备列表 

udioDevice = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);   // 找输入设备

2 使用指定设备和格式开始采集

// 设置采集格式

mFormatFile.setChannelCount(1);
    mFormatFile.setSampleRate(48000);   //
    mFormatFile.setSampleSize(16);      //
    mFormatFile.setSampleType(QAudioFormat::SignedInt);
    mFormatFile.setByteOrder(QAudioFormat::LittleEndian);
    mFormatFile.setCodec("audio/pcm");

  // 设置好路径后,打开要保存的音频文件

    mpSampledData = new QFile();
    mpSampledData->setFileName("./aaa.raw");

    mpSampledData->open(QIODevice::WriteOnly | QIODevice::Truncate);

// 使用指定的设备及格式,开始采集,info 是选择的设备.

    mpAudioInputFile = new QAudioInput(info, mFormatFile, this);
    mpAudioInputFile->start(mpSampledData);

3 采集停止

mpAudioInputFile->stop(); // 关闭采样设备,

mpSampledData->close();// 关闭文件(已经保存到指定路径)

 

4 使用Windows下的Matlab软件播放

clear;
filename = "audio_000.raw";
fileID = fopen(filename,'r','l','UTF-8'); // 'r'是只读模式,'l'是Little-Endian,Linux默认是UTF-8,''
mm = fread(fileID,'short');  // 还是使用short格式读取
plot(mm);
sound(mm/32768,48000); //采集的是有符号16位整形,需要转化为-1~1之间,才能保证不失真.

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值