Skip to content

Audio_Filter

xingkai509 edited this page Nov 21, 2017 · 14 revisions

SDK提供对原始的音频数据进行处理,来产生不同的音频滤镜
包含内置音频滤镜和自定义音频滤镜

1. 音频处理说明

1.1 内置音频滤镜

  • v4.0 的音频滤镜在com.ksyun.media.streamer.filter.audio下面,参考API接口速查

  • 4.2.3以前的版本仅提供AudioReverbFilter一种滤镜,该滤镜为音频提供混响效果

    4.2.3版本开始,支持变声和升降调两种滤镜:

    1. 变声,将主播声音变为搞怪的特效处理,能够增强互动时的趣味性;金山云SDK暂支持大叔、萝莉、庄重、机器人四种效果
    2. 升降调,主播唱歌时伴奏(背景音乐)的特效处理,即从低沉到高亢的一个过程,更适用于较专业的唱歌直播;金山云SDK支持-3至3从低沉到高亢的7个等级的调节,0为原始音效,具体等级可根据客户业务需求做自定义处理

1.1.1 混响设置方法

  1. 创建AudioReverbFilter实例
  2. 调用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 演唱会

1.1.2 变声设置方法

  1. 创建KSYAudioEffectFilter实例,目前支持的变声音效类型如下:
常量名 说明
AUDIO_EFFECT_TYPE_FEMALE 萝莉
AUDIO_EFFECT_TYPE_MALE 大叔
AUDIO_EFFECT_TYPE_HEROIC 庄严
AUDIO_EFFECT_TYPE_ROBOT 机器人
  1. 调用AudioFilterMgt的接口setFilter将实例设置给SDK

参考代码:

KSYAudioEffectFilter audioEffect = new KSYAudioEffectFilter(AUDIO_EFFECT_TYPE_FEMALE);
mStreamer.getAudioFilterMgt().setFilter(audioEffect);


1.1.3 升降调音效设置方法

  1. 创建KSYAudioEffectFilter实例,类型设置为AUDIO_EFFECT_TYPE_PITCH。
  2. 设置升降调 调用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;
  1. 调用AudioFilterMgt的接口setFilter将实例设置给SDK

参考代码:

KSYAudioEffectFilter audioEffect = new KSYAudioEffectFilter(KSYAudioEffectFilter.AUDIO_EFFECT_TYPE_PITCH);

audioEffect.setPitchLevel(KSYAudioEffectFilter.AUDIO_PITCH_LEVEL_3);
mStreamer.getBGMAudioFilterMgt().setFilter(audioEffect);


1.2 自定义音频滤镜

SDK提供基类 AudioFilterBase 供开发者自定义音频滤镜

1.2.1 设置方法

  1. 继承 AudioFilterBase 来创建和实现自己的音频滤镜类,例如Demo中的 DemoAudioFilter
  2. 调用接口调用 AudioFilterMgt 的接口setFilter将实例设置给SDK

参考代码:

DemoAudioFilter demofilter = new DemoAudioFilter();

mStreamer.getAudioFilterMgt().setFilter(demofilter);


1.3 设置多种音频滤镜

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接口速查
所有音频滤镜的设置在推流过程中设置均可生效

Clone this wiki locally