本片文章简单介绍一下使用Qt录制音频数据。
使用到的类为QAudioInput,使用这个类录制音频非常简单,基本步骤如下:
下面是一个简单的代码示例:
// [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