1

我想为 Android 开发一个应用程序,允许您在播放流媒体音乐时应用 3D 音效。

我想要达到的效果是当用户用耳机听音乐时,可以改变扬声器在 3D 空间中的虚拟位置,即能够在三个维度上定位声音:在范围内(距离),在上下方向(仰角)、前后方向以及两侧(方位角)。

我正在使用MediaPlayerAudioFx用于基本的音频效果,例如:EqualizerPresetReverbBassBoostVirtualizer。AudioFx 提供的任何效果都不允许您应用 3D 效果。

简而言之,我希望 Andorid 具有与AVAudioEnvironmentNodeIOS 可用的功能等效的功能。

官方文档Virtualizer

Virtualizer 实现公开的方法、参数类型和单元直接映射 OpenSL ES 1.0.1 规范 ( http://www.khronos.org/opensles/ ) 为SLVirtualizerItf接口定义的那些。有关详细信息,请参阅本规范。

因此,AudioFx 效果使用在OpenSL. OpenSL ES 规范 1.1通过界面演示了 3D 音频的实现,SL3DLocationItf看起来正是我正在寻找的。

如果没有允许应用 3D 音频效果的函数/库,那么SL3DLocationItf结合我当前的 MediaPlayer 和 Audiofx 实现使用 OpenSL 接口最不痛苦的方法是什么?

扩展 AudioFx 库以仅添加 3D 效果将是完美的,从而避免在实践中必须使用NDKJNI重新实现新的媒体播放器来添加音频效果(过多的开销)。

任何帮助和建议将不胜感激。

4

0 回答 0