Xamarin.Android和AudioRecord:录制后保存在文件中

时间:2018-07-03 15:56:39

标签: android xamarin.android buffer audiorecord

我想知道在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。什么是好的方法?

0 个答案:

没有答案