在Xamarin Android中录制时访问MediaRecorder字节

时间:2013-10-23 10:34:44

标签: c# android xamarin audio-recording mediarecorder

我想在录制过程中访问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中获取字节,所以我可以做类似的事情。我看到的大部分示例仅在完成录制后才能使用文件,例如herehere中的以下示例代码。

我不想在开始发送之前等待完整的录制。我不需要MediaRecorder来记录文件,只需让我访问字节。但是可以选择写入文件并发送字节也可以。有没有办法做到这一点,可能是使用ParcelFileDescriptor或其他东西?

0 个答案:

没有答案