我尝试用Qt从声卡读取音频并将其保存在文件中。
文件和QAudioInput的初始化完成如下:
QFile m_file;
QByteArray m_buffer(16 * 1024, 0);
m_file.setFileName("record.wav");
m_file.open(QIODevice::WriteOnly);
m_audioInput = new QAudioInput(m_device, m_format, this);
如果我尝试使用push方法,那么声音似乎记录正常。
m_audioInput->start(&m_file);
但是,如果我尝试使用pull方法,那么声音就没有录好(似乎有些块丢失了)
m_deviceIn = m_audioInput->start();
connect(m_deviceIn, SIGNAL(readyRead()), this, SLOT(readMore()));
void AudioIn::readMore()
{
qint64 len = m_audioInput->bytesReady();
if (len > BufferSize)
len = BufferSize;
qint64 l = m_deviceIn->read(m_buffer.data(), len);
if (l > 0) {
if (m_file.write(m_buffer.constData(), l) != l)
qInfo()<< "Error write to file";
}
}
任何人都可以解释为什么拉法不能很好地运作?