Я разработал приложение для Android для видеозвонков WebRTC, которое работает нормально. Теперь необходимо записать звук разговора и сохранить его на внешнем хранилище. Я пробовал MedieRecorder, который записывает звук и сохраняет его, но столкнулся с одной проблемой. когда я начинаю записывать звук, голос останавливается на приемной стороне. Media Recorder не позволял webrtc использовать микрофон.
Я пробовал следующий код.
private boolean startMediaRecorder(){
recorder = new MediaRecorder();
try{
recorder.reset();
//recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
recorder.setAudioSamplingRate(8000);
recorder.setAudioEncodingBitRate(12200);
//recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
//recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
// String fileName = audiofile.getAbsolutePath();
String fileName = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" +
CreateRandomAudioFileName(5) + "AudioRecording.3gp";
recorder.setOutputFile(fileName);
MediaRecorder.OnErrorListener errorListener = new MediaRecorder.OnErrorListener() {
public void onError(MediaRecorder arg0, int arg1, int arg2) {
Log.e(TAG, "OnErrorListener " + arg1 + "," + arg2);
// terminateAndEraseFile();
}
};
recorder.setOnErrorListener(errorListener);
MediaRecorder.OnInfoListener infoListener = new MediaRecorder.OnInfoListener() {
public void onInfo(MediaRecorder arg0, int arg1, int arg2) {
Log.e(TAG, "OnInfoListener " + arg1 + "," + arg2);
//terminateAndEraseFile();
}
};
recorder.setOnInfoListener(infoListener);
recorder.prepare();
// Sometimes prepare takes some time to complete
Thread.sleep(2000);
recorder.start();
isRecordStarted = true;
return true;
}catch (Exception e){
e.getMessage();
return false;
}
}
Я также пробовал `Recorder.setAudioSource (MediaRecorder.AudioSource.MIC); // рекордер.setAudioSource (MediaRecorder.AudioSource.VOICE_CALL);
Как я могу записать звук во время звонка WebRTC? Любая помощь будет очень оценена. Благодарность
Я столкнулся с этой проблемой. stackoverflow.com/questions/62633876/… Помогите решить это?
Посмотрите на класс RecordedAudioToFileController. Он может записывать аудиопоток в файл в формате PCM.
Если вы хотите получить на выходе обычный сжатый аудиофайл, например 3gp, mp3 и т. д., Вам нужно вручную создать аудиоконтейнер, закодировать и записать в него закодированные сэмплы.
Вам нужно добавить этот файл RecordedAudioToFileController. Кроме того, не забудьте установить SamplesReadyCallback в этом файле PeerConnectionClient.
С какой версией Andriod вы работаете?