【发布时间】:2013-03-25 09:38:30
【问题描述】:
我想在全局音频输出上添加混响效果,这意味着我想修改我在使用任何媒体播放器时可以听到的音频。
遗憾的是,我没有找到有效的示例,只有一些将效果应用于自行创建的 MediaPlayer 实例。
我试过这个,但没有成功:
// try #1
EnvironmentalReverb eReverb = new EnvironmentalReverb(1, 0);
eReverb.setDecayHFRatio((short) 1000);
eReverb.setDecayTime(10000);
eReverb.setDensity((short) 1000);
eReverb.setDiffusion((short) 1000);
eReverb.setReverbLevel((short) 1000);
eReverb.setReverbDelay(100);
eReverb.setEnabled(true);
// try #2
PresetReverb mReverb = new PresetReverb(2,0);
mReverb.setPreset(PresetReverb.PRESET_LARGEROOM);
mReverb.setEnabled(true);
谁能帮忙?
【问题讨论】:
-
你的应用有
MODIFY_AUDIO_SETTINGS权限吗? -
是的。 “setEnabled”命令返回“0”,表示“成功”。
-
嗯,文档对混响效果有这样的说法:“为了将 MediaPlayer 或 AudioTrack 馈送到此效果中,它们必须明确附加到它并且必须指定发送级别. ... 由于 EnvironmentalReverb 是一种辅助效果,因此建议在音频会话 0 上对其进行实例化,并将其附加到 MediaPLayer 辅助输出”。显式附加是指 MediaPlayer/AudioTrack 类中的 attachAuxEffect 方法。
-
嗯,是的,我读过这篇文章,但我不知道如何将其应用于不受我自己控制的 MediaPlayer,例如从另一个应用程序.. :)
-
我的解释是:不能。