-
Notifications
You must be signed in to change notification settings - Fork 209
Audio_Filter
xingkai509 edited this page Nov 21, 2017
·
14 revisions
SDK提供对原始的音频数据进行处理,来产生不同的音频滤镜
包含内置音频滤镜和自定义音频滤镜
-
v4.0 的音频滤镜在
com.ksyun.media.streamer.filter.audio
下面,参考API接口速查 -
4.2.3以前的版本仅提供AudioReverbFilter一种滤镜,该滤镜为音频提供混响效果
4.2.3版本开始,支持变声和升降调两种滤镜:
- 变声,将主播声音变为搞怪的特效处理,能够增强互动时的趣味性;金山云SDK暂支持大叔、萝莉、庄重、机器人四种效果
- 升降调,主播唱歌时伴奏(背景音乐)的特效处理,即从低沉到高亢的一个过程,更适用于较专业的唱歌直播;金山云SDK支持-3至3从低沉到高亢的7个等级的调节,0为原始音效,具体等级可根据客户业务需求做自定义处理
- 创建AudioReverbFilter实例
- 调用AudioFilterMgt的接口
setFilter
将实例设置给SDK
参考代码:
AudioReverbFilter reverbFilter = new AudioReverbFilter();
reverbFilter.setReverbLevel(AudioReverbFilter.AUDIO_REVERB_LEVEL_1);
mStreamer.getAudioFilterMgt().setFilter(reverbFilter);
混响预设效果:
常量名 | 说明 |
---|---|
AUDIO_REVERB_LEVEL_1 | 录音棚 |
AUDIO_REVERB_LEVEL_2 | KTV |
AUDIO_REVERB_LEVEL_3 | 小舞台 |
AUDIO_REVERB_LEVEL_4 | 演唱会 |
- 创建KSYAudioEffectFilter实例,目前支持的变声音效类型如下:
常量名 | 说明 |
---|---|
AUDIO_EFFECT_TYPE_FEMALE | 萝莉 |
AUDIO_EFFECT_TYPE_MALE | 大叔 |
AUDIO_EFFECT_TYPE_HEROIC | 庄严 |
AUDIO_EFFECT_TYPE_ROBOT | 机器人 |
- 调用AudioFilterMgt的接口
setFilter
将实例设置给SDK
参考代码:
KSYAudioEffectFilter audioEffect = new KSYAudioEffectFilter(AUDIO_EFFECT_TYPE_FEMALE);
mStreamer.getAudioFilterMgt().setFilter(audioEffect);
- 创建KSYAudioEffectFilter实例,类型设置为AUDIO_EFFECT_TYPE_PITCH。
- 设置升降调 调用KSYAudioEffectFilter的setPitchLevel接口设置升级调的等级,目前支持的等级有:
/*
pitch level from -3 to 3
*/
public static int AUDIO_PITCH_LEVEL_1 = -3;
public static int AUDIO_PITCH_LEVEL_2 = -2;
public static int AUDIO_PITCH_LEVEL_3 = -1;
public static int AUDIO_PITCH_LEVEL_4 = 0;
public static int AUDIO_PITCH_LEVEL_5 = 1;
public static int AUDIO_PITCH_LEVEL_6 = 2;
public static int AUDIO_PITCH_LEVEL_7 = 3;
- 调用AudioFilterMgt的接口
setFilter
将实例设置给SDK
参考代码:
KSYAudioEffectFilter audioEffect = new KSYAudioEffectFilter(KSYAudioEffectFilter.AUDIO_EFFECT_TYPE_PITCH);
audioEffect.setPitchLevel(KSYAudioEffectFilter.AUDIO_PITCH_LEVEL_3);
mStreamer.getBGMAudioFilterMgt().setFilter(audioEffect);
SDK提供基类 AudioFilterBase 供开发者自定义音频滤镜
- 继承 AudioFilterBase 来创建和实现自己的音频滤镜类,例如Demo中的
DemoAudioFilter
类 - 调用接口调用 AudioFilterMgt 的接口setFilter将实例设置给SDK
参考代码:
DemoAudioFilter demofilter = new DemoAudioFilter();
mStreamer.getAudioFilterMgt().setFilter(demofilter);
AudioFilterMgt的接口setFilter的的多个重载,可以让开发者同时设置多个音频滤镜
参考代码:
List<AudioFilterBase> filters = new LinkedList<>();
AudioReverbFilter reverbFilter = new AudioReverbFilter();
DemoAudioFilter demofilter = new DemoAudioFilter();
filters.add(reverbFilter);
filters.add(demofilter);
mStreamer.getAudioFilterMgt().setFilter(filters);
注:AudioFilterMgt接口说明参考API接口速查
所有音频滤镜的设置在推流过程中设置均可生效