文档中心
ExpressVideoSDK 实时音视频
文档中心
体验 App
SDK 中心
API 中心
常见问题
代码市场
进入控制台
立即注册
登录
中文站 English
  • 文档中心
  • 实时音视频
  • 音频能力
  • 自定义音频处理

自定义音频处理

更新时间:2024-01-02 18:48

功能简介

自定义音频处理一般用于去除语音中的干扰,由于 SDK 已经对采集的音频原始数据进行了回声消除、噪声抑制等处理,通常情况下,开发者无需再重复处理。如果开发者想在采集音频数据后或拉取远端音频数据渲染前,通过自定义处理实现特殊功能时(例如变声、美声等),可以参考本文档。

自定义音频处理的数据,是原始音频进行 3A(AEC 回声消除、AGC 自动增益控制、ANS 降噪)处理之后的音频数据:

  • 如果开发者需要对原始数据进行处理,请先调用 enableAEC、enableAGC、enableANS 接口关闭音频 3A 处理。如果开启了变声、混响、立体声等音效处理(默认是关闭的),也需要先关闭后,才能获取到原始音频数据。
  • 如果开发者需要同时获取原始数据和 3A 处理之后的音频数据进行处理,请参考 自定义音频采集与渲染。

使用步骤

1 创建 SDK 引擎

调用 createEngine 接口创建 SDK 引擎实例,详情可参考 快速开始 - 实现流程 的 “2.1 创建引擎”。

ZegoEngineProfile profile;
profile.appID = ZegoUtilHelper::AppID();
profile.appSign = ZegoUtilHelper::AppSign();
profile.scenario = ZegoScenario::ZEGO_SCENARIO_DEFAULT;
ZegoExpressSDK::createEngine(profile, nullptr);

2 设置音频自定义处理对象并实现回调方法

调用 setCustomAudioProcessHandler 接口设置音频自定义处理对象,并实现回调方法。在回调方法中直接处理传入的 data 即可实现对推拉流音频数据的处理。

class MyAudioProcessHandler: public IZegoCustomAudioProcessHandler{
public:
    void onProcessCapturedAudioData(unsigned char* data, unsigned int dataLength, ZegoAudioFrameParam* param) override{

    }

    void onProcessRemoteAudioData(unsigned char* data, unsigned int dataLength, ZegoAudioFrameParam* param, const std::string& streamID) override {

    }
};

engine->setCustomAudioProcessHandler(std::make_shared<MyAudioProcessHandler>());

3 自定义音频处理

在开始推流或启动本地预览前调用 enableCustomAudioCaptureProcessing 接口开启本地采集自定义音频处理,开启后,开发者可以通过 onProcessCapturedAudioData 回调收到本地采集的音频帧,并可以对音频数据进行修改。

在开始拉流或启动本地预览前调用 enableCustomAudioRemoteProcessing 接口开启远端拉流自定义音频处理,开启后,开发者可以通过 onProcessRemoteAudioData 收到远端拉流的音频帧,并且可以对音频数据进行修改。

ZegoCustomAudioProcessConfig config;
config.channel = ZEGO_AUDIO_CHANNEL_MONO;
config.samples = 2048;
config.sampleRate = ZEGO_AUDIO_SAMPLE_RATE_44K;

engine->enableCustomAudioRemoteProcessing(true, &config);
engine->enableCustomAudioCaptureProcessing(true, &config);
本篇目录
  • 免费试用
  • 提交工单
    咨询集成、功能及报价等问题
    电话咨询
    400 1006 604
    咨询客服
    微信扫码,24h在线

    联系我们

  • 文档反馈