我已经开发了一个用于WebRTC视频呼叫的android应用程序,运行良好。现在的要求是记录通话音频并将其存储在外部存储器中。我尝试过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;
}
}
我也尝试过“录音机”音频源(媒体记录器,音频源.MIC);录音机音频源(MediaRecorder.AudioSource.VOICE_CALL);
我如何在WebRTC通话期间录制音频?非常感谢任何帮助。谢谢。
您需要添加此文件RecordedAudioToFileController。另外,请记住在这个文件PeerConnectionClient中设置SamplesReadyCallback。
查看RecordedAudioToFileController类。它能够以PCM格式将音频流记录到文件中。
如果要在输出中获取常规的压缩音频文件,例如3gp,mp3等,则必须手动创建音频容器,对其进行编码并写入编码样本。
使用AudioSource VOICE_UPLINK和Voice_Downlink成功录制的任何一个呼叫。 还有一个问题:-当音频源VOICE_CALL不工作时,它有什么用? 谢谢你。
更新:任何人都知道如何强迫另一个流到麦克风音频源。这需要原生android代码。请在这方面帮助我,请参考这个问题,以获得更多关于路由音频的详细信息
我正在开发一个Android应用程序,用于使用媒体记录器录制通话,它适用于某些设备,但不能在7.1.1及更高版本的设备上录制其他人的声音,特别是在moto g设备上。 这是我的媒体记录器代码。 有没有办法实现这一点,请建议
如何获得呼叫的位置?不是全部地点,只是一个地区?也许android有一些API?未找到内容解析程序和Calllog.calls.content_uri
在Android 10(Pixel 3A)中,通话记录器在持续时间内录制空白。它适用于所有手机,直到Android 8和Android 9,大多数手机只录制一侧语音(但在像素3A中工作正常) 有没有办法在Android10中录制通话? 下面的代码似乎不再工作了。 如果使用SDK 28或更低版本,则会在整个过程中进行通话录音,但没有任何语音。如果使用SDK 29,则通话录音开始时失败,提示检查回调中
问题内容: 我正在重新整理用golang编写的小型Web应用程序的日志记录。由于外部需求,日志记录已被隔离在一个地方,因此我们以后可能会切换到 日志记录服务器 。(不是我的主意- 我保证…。)尽管如此,我们现在基本上可以使用标准库的一部分以及我们正在传递的用户/会话结构来记录日期/时间,行号,用户和消息等常见信息周围。 但是-随之而来的问题是- 在较低级别的方法中,仅为了获取日志而仅为了获取用户名