我正在使用MediaRecorder VOICE_CALL音源通话记录的应用程序,在它的崩溃一些棉花糖设备,后来我改变源MIC这里传入的声音是没有得到记录。现在由于这个java限制,我正在使用原生android代码来记录语音通话。 我设法使用native-audio录音机录制通话记录。问题是在本地代码中也只记录单侧语音,传入语音没有被记录。然后我试着语音通讯预设配置,它没有录音。以下是预设的配置代码。如何OpenSL配置录制语音呼叫
const SLInterfaceID id[2] = { SL_IID_ANDROIDSIMPLEBUFFERQUEUE,SL_IID_ANDROIDCONFIGURATION};
const SLboolean req[2] = { SL_BOOLEAN_TRUE,SL_BOOLEAN_TRUE};
result = (*engineEngine)->CreateAudioRecorder(engineEngine, &recorderObject, &audioSrc,
&audioSnk, 2, id, req);
SLAndroidConfigurationItf inputConfig;
result = (*recorderObject)->GetInterface(recorderObject,
SL_IID_ANDROIDCONFIGURATION,
&inputConfig);
if (SL_RESULT_SUCCESS == result) {
SLuint32 presetValue =SL_ANDROID_RECORDING_PRESET_VOICE_COMMUNICATION ;
(*inputConfig)->SetConfiguration(inputConfig,
SL_ANDROID_KEY_RECORDING_PRESET,
&presetValue,
sizeof(SLuint32));
__android_log_print(ANDROID_LOG_DEBUG, "LOG_TAG", "\n Native PCM Conf Success\n");
} else{
__android_log_print(ANDROID_LOG_DEBUG, "LOG_TAG", "\n Native PCM Conf Error %d\n",result);
}
添加预设配置后我得到的时候开始录制语音呼叫系统错误:
E/AudioRecord:无法获取音频输入记录源7,采样率16000,格式为0x1 ,channel mask 0x10,session 925,flags 0
E/libOpenSLES:android_audioRecorder_realize(0x559548c350)创建AudioRecord对象时出错;状态-22
W/libOpenSLES:离开的物体::实现(SL_RESULT_CONTENT_UNSUPPORTED)
你说的是https://github.com/googlesamples/android-ndk/tree/master/audio-echo这个链接,但在我的情况下音频文件是不是跟这个代码创建 –
没有我用这个例子:https://github.com/googlesamples/android-ndk/tree/master/native-audio,并在语音呼叫我启动记录器并将缓冲区存储文件保存为sd卡内的.pcm。 检查此链接保存到SD卡:https://stackoverflow.com/questions/18444354/save-recorded-audio-to-file-opensl-es-android –
意味着它不会自动启动?我运行的代码有一个按钮启动,所以当我打电话给任何一个tmo然后我去这个应用程序并按下按钮启动,然后它会开始记录?它把我的文件放在哪个文件夹中? –