5

我目前使用 AudioRecord 从 Android 设备的麦克风录制音频,然后将其直接传输到 AudioTrack,该 AudioTrack 在 Android 设备的听筒上播放。

我想知道是否可以使用 MediaPlayer 和 MediaRecorder 类来代替,因为我需要使用 Media 类而不是 Audio 类上可用的 AMR-NB 编码。

我对 MediaRecorder 和 MediaPlayer 的问题是我似乎必须录制到一个文件然后播放该文件?

这不是我想要做的,无论如何,是否可以使用 Media 类将音频声音从 Mic 流式传输到 Earpiece?

我使用音频类的代码如下,是否可以对 MediaPlayer 和 MediaRecorder 做同样的事情?

public class Record extends Thread
 {

    static final int bufferSize = 200000;
    final short[] buffer = new short[bufferSize];
    short[] readBuffer = new short[bufferSize];

    public void run() {  
      isRecording = true;
      android.os.Process.setThreadPriority
      (android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);

      int buffersize = AudioRecord.getMinBufferSize(11025,
      AudioFormat.CHANNEL_CONFIGURATION_MONO,
      AudioFormat.ENCODING_PCM_16BIT);


                     arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
                                     11025,
                                     AudioFormat.CHANNEL_CONFIGURATION_MONO,
                                     MediaRecorder.AudioEncoder.AMR_NB,
                                     buffersize);
                     atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
                                     11025,
                                     AudioFormat.CHANNEL_CONFIGURATION_MONO,
                                     MediaRecorder.AudioEncoder.AMR_NB,
                                     buffersize,
                                     AudioTrack.MODE_STREAM);

                     Log.d("AUDIO", "sample rate = : " + arec.getSampleRate());

                     atrack.setPlaybackRate(11025);

                     byte[] buffer = new byte[buffersize];
                     arec.startRecording();
                     atrack.play();

                     while(isRecording) {
                             arec.read(buffer, 0, buffersize);
                             atrack.write(buffer, 0, buffer.length);
                     }  
    }
}
4

1 回答 1

4

不,不是在这个时候;这是一个众所周知的限制,MediaPlayer即不支持字节流输入。您仍然需要文件或 URI 输入源。

于 2010-02-10T17:59:36.990 回答