提交工单
咨询集成、功能及报价等问题
自定义音频处理一般用于去除语音中的干扰,由于 SDK 已经对采集的音频原始数据进行了回声消除、噪声抑制等处理,通常情况下,开发者无需再重复处理。
如果开发者想在采集音频数据后或拉取远端音频数据渲染前,通过自定义处理实现特殊功能时(例如变声、美声等),可以参考本文档。
自定义音频处理的数据,是原始音频进行 3A(AEC 回声消除、AGC 自动增益控制、ANS 降噪)处理之后的音频数据:
在自定义音频处理之前,请确保:
调用 createEngine 接口创建 SDK 引擎实例,详情可参考 快速开始 - 实现流程 的 “创建引擎”。
ZegoEngineProfile profile = new ZegoEngineProfile();
profile.appID = appID;
profile.appSign = appSign;
profile.scenario = ZegoScenario.DEFAULT;
profile.application = getApplication();
ZegoExpressEngine.createEngine(profile, null);
调用 setCustomAudioProcessHandler 接口设置音频自定义处理对象,并实现回调方法:自定义音频处理本地采集 PCM 音频帧回调 onProcessCapturedAudioData 和自定义音频处理远端拉流 PCM 音频帧回调 onProcessRemoteAudioData。在回调方法中直接处理获取的 data
,即可实现对推拉流音频数据的处理。
ZegoExpressEngine.getEngine().setCustomAudioProcessHandler(new IZegoCustomAudioProcessHandler() {
@Override
public void onProcessCapturedAudioData(ByteBuffer data, int dataLength, ZegoAudioFrameParam param, double timestamp) {
}
@Override
public void onProcessRemoteAudioData(ByteBuffer data, int dataLength, ZegoAudioFrameParam param, String streamID, double timestamp) {
}
});
在开始推流或启动本地预览前,调用 enableCustomAudioCaptureProcessing 接口开启本地采集自定义音频处理。开启后,开发者可以通过 onProcessCapturedAudioData 回调收到本地采集的音频帧,并可以对音频数据进行修改。
在开始拉流前,调用 enableCustomAudioRemoteProcessing 接口开启远端拉流自定义音频处理。开启后,开发者可以通过 onProcessRemoteAudioData 收到远端拉流的音频帧,并且可以对音频数据进行修改。
ZegoCustomAudioProcessConfig zegoCustomAudioProcessConfig = new ZegoCustomAudioProcessConfig();
zegoCustomAudioProcessConfig.channel = ZegoAudioChannel.MONO;
zegoCustomAudioProcessConfig.sampleRate = ZegoAudioSampleRate.ZEGO_AUDIO_SAMPLE_RATE_16K;
zegoCustomAudioProcessConfig.samples = 0;
ZegoExpressEngine.getEngine().enableCustomAudioCaptureProcessing(true, zegoCustomAudioProcessConfig);
ZegoExpressEngine.getEngine().enableCustomAudioRemoteProcessing(true, zegoCustomAudioProcessConfig);
联系我们
文档反馈