我想知道在AudioRecord
具有之后,是否有办法在文件中写入完成录制。
我在那里描述了我的第一个问题:我无法使用相同的AudioRecord
将其写入文件并显示相关的频谱图,而没有遇到一些问题(性能,滞后等)
因此,我尝试在文件完成后将AudioRecord
写入文件中。
首先,我在AudioRecord
正在录音时重复打给OnNext()
的电话:
AudioRecord
在while (audioRecord != null && audioRecord.RecordingState == RecordState.Recording)
{
try
{
OnNext();
}
catch (Exception ex)
{
throw ex;
}
}
方法中,我读取当前缓冲区,然后将其发送到光谱数据:
OnNext()
录制完成后,我调用void OnNext()
{
short[] audioBuffer = new short[2048];
audioRecord.Read(audioBuffer, 0, audioBuffer.Length);
int[] result = new int[audioBuffer.Length];
for (int i = 0; i < audioBuffer.Length; i++)
{
result[i] = (int)audioBuffer[i];
}
bufferCount++;
samplesUpdated(this, new SamplesUpdatedEventArgs(result));
}
方法:
WriteAudioDataToFileAfterRecording()
在public void StopRecording()
{
if (null != audioRecord)
{
if (audioRecord.State == State.Initialized)
{
audioRecord.Stop();
WriteAudioDataToFileAfterRecording();
}
audioRecord.Release();
audioRecord = null;
//...
}
}
中,我尝试通过读取后更新偏移量来浏览WriteAudioDataToFileAfterRecording()
:
AudioRecord
=>但这不能按预期工作:当缓冲区的大小不同于0时,Read()结果为-2。什么是好的方法?