android-访问MediaPlayer中的音频缓冲区
作者:互联网
我正在研究Android项目,该项目必须分析频域中的音频信号.实际上,我已经准备好模块,该模块正在从设备麦克风读取信号并对其进行处理(FFT,可视化等),并且这种信号没有任何问题.
现在,我正在尝试分析作为mp3文件存储在设备上的音频信号.通常,从MediaPlayer对象播放它没有任何问题.不幸的是,我在访问播放器播放的数据缓冲区时遇到了一些问题,您可以将其用于频谱计算.
您对我如何获得音频缓冲区有什么建议? MediaPlayer是否完全可能,还是我应该使用其他方法来解决此问题?
解决方法:
据我所知,没有办法使用MediaPlayer直接访问缓冲区.
但是,如果您使用的API≥16(Android 4.1),则可以使用内置的MediaCodec
类将MP3文件解码为原始PCM流.您可以对数据进行分析,然后将其传递到AudioTrack进行输出. This blog post显示了有关如何解码和发送到音轨的示例.
如果必须支持较低的API级别,则可以以相同方式使用第三方库.我过去使用过JLayer,但是它的性能高度依赖于硬件.在某些低端设备上,您将无法实时解码.
标签:fft,android-mediaplayer,spectrum,audio,android 来源: https://codeday.me/bug/20191030/1965063.html