Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Xamarin Android中录制时访问MediaRecorder字节_C#_Android_Xamarin_Audio Recording_Mediarecorder - Fatal编程技术网

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

C# 在Xamarin Android中录制时访问MediaRecorder字节,c#,android,xamarin,audio-recording,mediarecorder,C#,Android,Xamarin,Audio Recording,Mediarecorder,我想在录制过程中访问由MediaRecorder录制的音频字节,以便将它们与UdpClient一起发送到服务器应用程序 我可以通过AudioRecord执行以下操作(注意while(true)循环) 但是我不知道如何从MediaRecorder中提取字节,这样我就可以做类似的事情了。我看到的大多数示例仅在录制完成后使用文件,如和中的以下示例代码 我不想在开始发送之前等待完整的录音。我不需要MediaRecorder来录制文件,只要让我访问字节即可。但是,如果既可以写入文件,又可以发送字节,那就很

我想在录制过程中访问由
MediaRecorder
录制的音频字节,以便将它们与UdpClient一起发送到服务器应用程序

我可以通过
AudioRecord
执行以下操作(注意
while(true)
循环)

但是我不知道如何从MediaRecorder中提取字节,这样我就可以做类似的事情了。我看到的大多数示例仅在录制完成后使用文件,如和中的以下示例代码


我不想在开始发送之前等待完整的录音。我不需要
MediaRecorder
来录制文件,只要让我访问字节即可。但是,如果既可以写入文件,又可以发送字节,那就很好了。有没有办法做到这一点,也许是通过使用
ParcelFileDescriptor
或其他什么方法?

你有没有发现这个问题?没有,我只是坚持用
AudioRecord
。有人找到了答案吗?
        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;