我想在录制过程中访问MediaRecorder
正在录制的音频字节,这样我就可以将它们与UdpClient一起发送到服务器应用程序。
我可以通过执行以下操作AudioRecord
执行此操作(请注意while(true)
循环)
endRecording = false;
isRecording = true;
audioBuffer = new Byte[1024];
audioRecord = new AudioRecord (
// Hardware source of recording.
AudioSource.Mic,
// Frequency
11025,
// Mono or stereo
ChannelIn.Mono,
// Audio encoding
Android.Media.Encoding.Pcm16bit,
// Length of the audio clip.
audioBuffer.Length
);
audioRecord.StartRecording ();
while (true) {
if (endRecording) {
endRecording = false;
break;
}
try {
// Keep reading the buffer while there is audio input.
int numBytes = await audioRecord.ReadAsync (audioBuffer, 0, audioBuffer.Length);
//Send the audio data with the DataReceived event where it gets send over UdpClient in the Activity code
byte[] encoded = audioBuffer; //TODO: encode audio data, for now just stick with regular PCM audio
DataReceived(encoded);
} catch (Exception ex) {
Console.Out.WriteLine (ex.Message);
break;
}
}
audioRecord.Stop ();
audioRecord.Release ();
isRecording = false;
但是我不确定如何从MediaRecorder
中获取字节,所以我可以做类似的事情。我看到的大部分示例仅在完成录制后才能使用文件,例如here和here中的以下示例代码。
我不想在开始发送之前等待完整的录制。我不需要MediaRecorder
来记录文件,只需让我访问字节。但是可以选择写入文件并发送字节也可以。有没有办法做到这一点,可能是使用ParcelFileDescriptor
或其他东西?