使用Qt录制音频

本片文章简单介绍一下使用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

你可能感兴趣的:(qt,音频录制,record,QAudioInput,QAudioFormat,qt)