gpt4 book ai didi

android - 如何配置 OpenSL 来录制语音通话

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:14 26 4
gpt4 key购买 nike

我正在使用 MediaRecorder VOICE_CALL 音频源开发一个通话记录器应用程序,在一些棉花糖设备中它崩溃了,然后我将源更改为 MIC 这里传入的语音不是被记录下来。由于这个 java 限制,我现在正在使用 native android 代码来记录语音通话。我设法使用 native-audio 录制了音频通话录音机的录音机。问题出在 native 代码中,它也只录制一侧的声音,没有录制传入的声音。然后我尝试了语音通讯预设配置,它没有录音。下面是预设的配置代码。

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: Could not get audio input for record source 7, sample rate 16000, format 0x1, channel mask 0x10, session 925, flags 0

E/libOpenSLES: android_audioRecorder_realize(0x559548c350) error creating AudioRecord object; status -22

W/libOpenSLES: Leaving Object::Realize (SL_RESULT_CONTENT_UNSUPPORTED)

最佳答案

检查文档并设置正确的采样率、格式和掩码。 channel 掩码可能是立体声或单声道。我不确定您是如何获得状态 -22 错误的,但是根据文档,实现错误非常清楚

SL_RESULT_CONTENT_UNSUPPORTED if a format is not supported (e.g. sample rate too high)

查看 NDK 示例以阐明您的参数设置

关于android - 如何配置 OpenSL 来录制语音通话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45593065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com