我的目标是将QAudioRecorder
的录音保存到内存中。从我的研究来看,似乎最好的方式是使用QByteArray
来存储录音。我的音频记录器使用QAudioProbe
进行探测。
通过audioBufferProbed
信号,我尝试使用以下插槽方法将数据追加到字节数组中。
QByteArray *byteArr;
void AudioRecorder::processBuffer(const QAudioBuffer &buffer)
{
byteArr->append(buffer.constData<char>());
qDebug() << buffer.byteCount();
qDebug() << byteArr->size();
}
然而,这似乎不起作用,考虑到buffer.byteCount();
一直返回4092,这似乎很正常,但是byteArr->size();
返回的增量通常都是奇怪、不规则的,通常以2、4、6、7、189开头。
数据的大小通常只有约18kb,这也让我相信数据没有被正确地添加到字节数组中。
根据QByteArray::size()文档,size()
应该给出数组中有多少字节。连同QAudioBuffer::byteCount()一起,它也应该给出当前缓冲区中的字节数,那么难道不应该将缓冲区中完整的4092个字节复制到数组中吗?
如果有更好的存储数据的方法,我也可以接受另一种不使用QByteArray
的解决方案。
buffer.byteCount();
。对不起,我应该提到字节数组已经初始化了。指针只是用于测试。 - Alex.size()
是 QByteArray,是我的错误 :p - code_fodder