문제

현재 AudioreCord를 사용하여 Android 장치의 마이크에서 오디오를 녹음 한 다음 Android 장치의 이어 피스를 재생하는 오디오 트랙으로 바로 파이프를 파이프합니다.

오디오 클래스가 아닌 미디어 클래스에서 사용할 수있는 AMR-NB 인코딩을 사용해야하므로 미디어 플레이어 및 MediareCorder 클래스를 사용하여 똑같이 할 수 있을지 궁금합니다.

MediareCorder와 MediaPlayer의 문제가 파일에 녹음 한 다음 해당 파일을 재생 해야하는 것 같습니다.

이것은 내가하고 싶은 일이 아닙니다. 어쨌든 미디어 클래스와 함께 마이크에서 이어 피스로 오디오 사운드를 스트리밍 할 수 있습니까?

오디오 클래스를 사용하는 내 코드는 아래에 있습니다. 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);
                     }  
    }
}
도움이 되었습니까?

해결책

아니요, 현재는 아닙니다. 잘 알려진 한계입니다 MediaPlayer 바이트 스트림 입력은 지원되지 않습니다. 여전히 파일 또는 URI 입력 소스가 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top