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

时间:2015-04-17 08:57:56

标签: android pcm mediacodec aac

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

我跟着this CTS test来获取解码后的数组。

有没有办法最小化解码过程或获取有关音频文件帧的相关信息,而不是每次都解码整个文件。

1 个答案:

答案 0 :(得分:2)

您无需等待整个文件被解码,一旦可用,您就可以使用每个帧中的解码数据。

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

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