我需要在存储到设备中的.3gp格式的录音列表上制作一些音频效果。
我需要的音频效果是添加混响声音或混合其他音频文件与交通声音或人群。
我认为混合录音和音频效果的最佳方法是使用SoundPool类。为了制作SoundPool,我遵循了下一个教程:Getting your feet wet in Android’s SoundPool
对于回声效果,我试图将audiofx包用于PresetReverb和EnvironmentReverb类,但是没有对我的代码产生影响:
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/
我的最后一个问题是如何在效果后保存媒体播放器。
答案 0 :(得分:0)
您必须将新对象(混响)与媒体播放器会话连接起来。
你可以这样做:
eReverb = new EnvironmentalReverb(0, mp.getsessionid());
// mp是您的音频播放器对象
Greeetz!