使用Qt录制音频

本文介绍如何使用Qt的QAudioInput类进行音频录制。通过设置音频参数,如采样率、通道数和样本大小,可以轻松启动音频录制。代码示例展示了如何初始化QAudioInput对象,开始录制,并在定时器中不断读取音频数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本片文章简单介绍一下使用Qt录制音频数据。
使用到的类为QAudioInput,使用这个类录制音频非常简单,基本步骤如下:

  1. 设置录制音频的采样率、大小和通道等信息,创建QAudioInput类的对象。
  2. 调用QAudioInput类的成员函数 start() 开始录制音频。
  3. 调用QAudioInput类的成员函数 bytesReady() 获取当前从设备中录制的字节大小。

下面是一个简单的代码示例:

// [1] 创建QAudioInput对象
QAudioFormat format;
format.setSampleRate(44100);
format.setChannelCount(2);
format.setSampleSize(16);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::UnSignedInt);

QAudioInput *m_AudioInput = new QAudioInput(format, this);

// Init Timer
m_Timer = new QTimer(this);
m_Timer->setInterval(100);
QObject::connect(m_Timer, SIGNAL(timeout()), this, SLOT(onTimeout()));
m_AudioRecordByte.clear();
m_Timer->start();

// [2] 开始录制
m_AudioRecord = m_AudioInput->start();

下面是在定时器中不断的获取音频数据的代码:

void AudioUI::readRecordDevice(void)
{
	// [3] 获取录制字节数
	int byteSize = m_AudioInput->bytesReady();
	int len = byteSize;
	while (len)
	{
		int readSize = qMax(1024, byteSize);
		char *pData = new char[readSize];
		
		// [4] 获取录制的音频数据
		len = m_AudioRecord->read(pData, readSize);

		// 保存数据
		m_AudioRecordByte.append(pData, len);

		delete[] pData;
	}
}

完整代码可参照:
https://github.com/douzhongqiang/CreateAudio

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值