从 Android 中的解码声音文件绘制音频波形

Drawing an audio waveform from a decoded sound file in Android

我正在尝试从解码的音频文件中绘制自定义波形视图。问题是当我使用 MediaCodec class 将 m4a 声音文件解码为 pcm 时,解码过程可能需要很长时间。

我跟着this CTS test得到了解码后的数组

有什么办法可以减少解码过程,或者不用每次都解码整个文件就可以获取音频文件帧的相关信息。

您无需等待整个文件解码完毕,您可以在每一帧的解码数据可用后使用它。

在您链接的 CTS 测试中,查看第 223-234 行 - 此处已从解码器接收到解码数据缓冲区,并将其复制到输出缓冲区中。如果您将其更改为在此处处理数据,则可以立即处理解码后的数据,而无需等待整个文件。 (这也是文件播放的方式。)

请记住,您不能真正假设输出帧的大小,它取决于文件中使用的编解码器的帧大小。 (对于最常见的 AAC 版本,它是 1024 个样本。)因此,根据您希望如何处理输出数据,您可能希望在必要时将其缓冲成稍大的块。