【问题标题】:Android: Global audio reverb effectAndroid:全局音频混响效果
【发布时间】: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,例如从另一个应用程序.. :)
  • 我的解释是:不能。

标签: android audio effects


【解决方案1】:

我认为是因为将某些方法与另一种方法值声音效果而不是感觉相结合,例如(“setReflectionsLevel”与“setRoomLeve”)

添加这两个方法并再次测试。

eReverb.setReflectionsLevel(-8500);
eReverb.setRoomLevel(-8500);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 2010-11-10
    • 1970-01-01
    • 2014-11-03
    相关资源
    最近更新 更多