我正试图在Android上为一个简短的AAC音频文件(无法转换为来自Web服务的WAV)绘制波形,这显然非常棘手。
以下是我想要实现的目标的图像:
请注意,视图的框架将与设备的屏幕分辨率成比例固定,并且不需要拉伸或完全缩放。这意味着我可以设置一个高度值数组,其长度等于运行时视图的像素宽度。这些音频文件也很短,所以我现在并不担心内存。
现在,如果我理解的话,必要的步骤基本上是:
但是,我在第1步遇到了麻烦。我试过了:
JAAD(http://jaadec.sourceforge.net/usage.php)看起来很有前途,但却发现由于缺少javax.sound.sampled,它无法在Android上运行。
https://stackoverflow.com/a/11858709/269152中答案中提供的代码实际上可以很好地处理所有步骤(稍微编辑代码以删除所有缩放等),除了波形真的是块状的,我认为由于音频被切割成少量“帧”的方式,可能是由于这是用于较长的文件并由用户放大。通过编辑CheapWAV类,我已经能够在WAV处理中获得更多细节,但我不确定如何使用CheapAAC类。
由于需要Android 4.1+,Android的MediaCodec不是一个选项。我需要支持2.3。
我已经尝试将Android的Visualizer类与MediaPlayer结合使用,但我所得到的只是1024个长度为-128的数组。看起来可视化器不是用来扫描文件,而只是为了在播放时可视化播放?如果有任何用处,我可以发布代码。 (http://developer.android.com/reference/android/media/audiofx/Visualizer.html)
在iOS上使用AVAssetReader为我解码音频非常简单。我错过了一些明显的东西吗我有一个简单的方法来获取AAC文件的PCM值,以便我可以在我的视图中绘制它们吗?或者有人知道处理所有这一切的真棒视图吗?
非常感谢您的任何帮助!