Skip to content

audio_effect_define

zanxiaofei edited this page Jan 25, 2018 · 3 revisions

自定义音效

SDK提供对原始的音频数据进行处理,来产生不同的音频滤镜,包括内置滤镜和自定义滤镜,相关使用详细参考音频滤镜
其中内置滤镜中提供了KSYAudioEffectFilter来提供变声和变调的动能。
SDK除了提供已经调试好的几种变声和变调类型外,在ver5.0.0及以上版本还提供了接口,方便用户自定义音效。

SDK集成的音效依赖参考的是SoX,SoX的详细介绍,移步官网http://sox.sourceforge.net/Main/HomePage

接口介绍

在创建KSYAudioEffectFilter实例时,设置音频效果效果类型为KSYAudioEffectFilter.Audio_EFFECT_TYPE_USER_DEFINE,即可通过KSYAudioEffectFilter来自定义音效

1、添加音频效果
使用KSYAudioEffectFilter的addEffect接口添加音频效果

 /**
     * 添加音频效果
     * @param name  特效名称,比如"highpass"、"pitch"
     * @param argc  argv的有效数组长度
     * @param argv  设置给效果的参数信息
     * @throws IllegalArgumentException
     */
    public void addEffect(String name, int argc, String[] argv) throws IllegalArgumentException

2、删除所有添加的效果
使用KSYAudioEffectFilter的removeEffects()接口删除之前添加的音频效果

接口使用示例代码

//创建KSYAudioEffectFilter实例  
            KSYAudioEffectFilter effectFilter = new 
                                   KSYAudioEffectFilter(KSYAudioEffectFilter.Audio_EFFECT_TYPE_USER_DEFINE);  
            String[] argv1 = new String[1];
            argv1[0] = String.valueOf(-100);
//添加pitch效果
            effectFilter.addEffect("pitch", argv1.length, argv1);
            String[] argv = new String[6];
            argv[0] = "50";
            argv[1] = "50";
            argv[2] = "40";
            argv[3] = "100";
            argv[4] = "50";
            argv[5] = "0";
//添加reverb效果
            effectFilter.addEffect("reverb",argv.length, argv);
//将KSYAudioEffectFilter设置给SDK生效
            mKSYRecordKit.getAudioFilterMgt().setFilter(effectFilter);
Clone this wiki locally