【发布时间】:2016-10-01 07:34:51
【问题描述】:
我的目标是将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 的另一种解决方案。
【问题讨论】:
标签: c++ qt qt5 qbytearray qaudiorecorder