현재 Android 기기에서 Audio를 테스트하기위한 루프백 프로그램이 있습니다.Android - AudioRecord에 내 오디오 코덱을 추가하는 방법
AudioRecord와 AudioTrack을 사용하여 마이크에서 PCM 오디오를 녹음하고 이어폰에서 PCM 오디오를 재생합니다. 여기
코드입니다 :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,
AudioFormat.ENCODING_PCM_16BIT,
buffersize);
atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize,
AudioTrack.MODE_STREAM);
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);
}
}
}
그래서 당신은 AudioTrack의 생성에보고 인코딩이 AudioFormat을 통해 공급되지만이 16 비트 또는 8 비트 PCM을 허용 가지 audiorecord 수있다.
나는 내 자신의 G711 코덱 구현을 가지고 있으며 마이크에서 오디오를 인코딩하고 이어 피스로 디코딩 할 수 있기를 원합니다. 따라서 (짧은 lin [], int 오프셋, 바이트 인코딩 [ ], int frames) 및 디코드 (byte enc [], 짧은 lin [], int 프레임) 메서드를 사용하지만 인코딩 방법과 AudioRecord 및 AudioTrack의 오디오를 디코딩하는 방법은 확실하지 않습니다.
누구나 나를 도와 주거나 올바른 방향으로 나를 가리킬 수 있습니까?
안녕하세요. Donal, 최종 구현으로이 질문을 업데이트 할 수 있습니까? 나는 성공하지 못하고 G711에서 인코딩/디코딩하려고하는 며칠 동안 노력 해왔다. 우리가 어떻게했는지 볼 수 있다면 환상적 일 것입니다 ...이 문제와 관련하여 많은 문제가 있습니다. 감사합니다. –
안녕하세요 Juan, 더 이상 최종 솔루션이 없기 때문에 오랫동안 남겨두고 더 이상 솔루션의 코드를 기억하지 못하거나 사과 할 수있는 프로젝트의 일부였습니다. –