首页 > 解决方案 > 将 EnviromentalReverb 和 PresetReverb 添加到 mediaPlayer(wav 和 m4a 格式),但混响不适用

问题描述

我正在开发一个简单的 android 音乐应用程序,我尝试将 EnviromentalReverb 和 PresetReverb 添加到 mediaPlayer(wav 和 m4a 格式),但混响不适用。音频播放时没有变化。我已经使用下面的代码检查了我的设备是否支持混响,它确实支持。我在stackoverflow上看过类似的问题,但没有一个有效的答案。

final AudioEffect.Descriptor[] effects = AudioEffect.queryEffects();
// Determine available/supported effects
for (final AudioEffect.Descriptor effect : effects) {
   Log.d("Effects", effect.name.toString() + ", type: " + effect.type.toString());
}

用于 EnvironmentalReverb 和 PresetReverb 的代码如下

第一次尝试

EnvironmentalReverb eReverb = new EnvironmentalReverb(1,0);
eReverb.setReverbDelay(85);
eReverb.setEnabled(true);
mMediaPlayer.attachAuxEffect(eReverb.getId());
mMediaPlayer.setAuxEffectSendLevel(1.0f);

第二次尝试

PresetReverb mReverb = new PresetReverb(1, 0);
mReverb.setPreset(PresetReverb.PRESET_LARGEROOM);
mReverb.setEnabled(true);
mMediaPlayer.attachAuxEffect(mReverb.getId());
mMediaPlayer.setAuxEffectSendLevel(1.0f);

两者都为 setEnabled(true) 返回 0,但都不适用于音频。有人可以指出我正确的方向吗?我不确定实施有什么问题。

标签: javaandroid

解决方案


回答我的问题,以便对其他人有所帮助。我无法让 PresetReverb 工作。然而,EnvironmentalReverb 正在工作,但要确定它是否工作,我必须为房间电平和混响电平添加搜索栏,以便我可以实时改变它。

EnvironmentalReverb eReverb = new EnvironmentalReverb(0,0);
mMediaPlayer.attachAuxEffect(eReverb.getId());
mMediaPlayer.setAuxEffectSendLevel(1.0f);

我通过单击按钮启用了混响,然后使用搜索栏来更改房间级别和混响级别。


推荐阅读