提问者:小点点

制作一些音频效果并将其存储在媒体播放器中


我需要在存储到设备中的.3gp格式的录音列表上制作一些音频效果。

我需要的音频效果是添加混响声音或与另一个带有交通或人群声音的音频文件混合。

我相信混合录音和音频效果的最佳方式是使用SoundPool类。为了制作SoundPool,我遵循了下一个教程:在Android的SoundPool中弄湿你的脚

对于回声效果,我尝试将audiofx包与PresetReverb和环境回声类一起使用,但我的代码没有产生效果:

public void playSoundPresetReverb(){

       PresetReverb pReverb  = new PresetReverb(1, 0);
       mp.attachAuxEffect(pReverb.getId());
       pReverb.setPreset(PresetReverb.PRESET_LARGEHALL);
       pReverb.setEnabled(true);

       mp.setAuxEffectSendLevel(1.0f);


    }

public void playSoundEnvironmentReverb(){

       eReverb = new EnvironmentalReverb(0, 0);
       eReverb.setDecayHFRatio((short) 1000);
       eReverb.setDecayTime(1000);
       eReverb.setDensity((short) 1000);
       eReverb.setDiffusion((short) 1000);
       eReverb.setReverbLevel((short) -1000);
       eReverb.setReverbDelay((short) 50);
       eReverb.setEnabled(true);
       //mp.attachAuxEffect(eReverb.getId());
       mp.setAuxEffectSendLevel(1.0f);


    }

但是混响没有效果。我认为效果是在mp. start()之前应用的;但是我不知道是否需要为MediaPlayer做一些准备。

这是活动的LogCat:

http://imageshack.us/photo/my-images/339/sinttulohh.jpg/

我的最后一个问题是效果后如何保存媒体播放器。


共1个答案

匿名用户

您必须将新对象(混响)与您的媒体播放器会话连接起来。

你可以这样做:

eReverb = new EnvironmentalReverb(0, mp.getsessionid()); 

//mp是你的音频播放器对象

格里兹!