1

我想在 iOS 上离线处理音频,但对内存使用情况有疑问。如果我使用 AVAssetReader 将 MP3 解压缩为原始 PCM 数据,那么内存占用会很大。那么,如果解压缩会导致应用程序使用过多内存,我将如何处理(离线 FFT)一个 mp3 文件?我想我必须以某种方式流式传输它,但我不知道如何在 iOS 中做到这一点。

4

1 回答 1

0

AVAssetReader 可以使用 AVAssetWriter 写入文件。

要获得 PCM,您可以编写 WAV 文件格式,然后在读取时跳过 RIFF 标头。然后,您只需要在任何时候将尽可能多的数据从 WAV 文件拉入内存,只要您的 FFT 长度需要。如果每个 FFT 的样本长度远远超过 100 万,这只会导致内存占用问题。

您可以使用 C/unix posix 调用(fgetc 等)在 iOS 下读取文件流。或者从 NSInputStream 读取到 NSData。

于 2011-09-25T18:13:35.030 回答