我想在iOS上离线处理音频,但有关于内存使用情况的查询。如果我使用AVAssetReader将MP3解压缩为原始PCM数据,则内存占用量将会很大。那么,如果解压缩导致应用程序使用太多内存,我将如何处理(离线FFT)mp3文件?我假设我必须以某种方式对其进行流式处理,但我不知道如何在iOS中进行此操作。
答案 0 :(得分:0)
AVAssetReader可以使用AVAssetWriter写入文件。
要获取PCM,您可以编写WAV文件格式,然后在读取时跳过RIFF标题。然后,您只需要在FFT长度需要的任何时间将任意数据从WAV文件中提取到内存中。如果每个FFT的样本长度超过100万,那么这只会导致内存占用问题。
您可以使用C / unix posix调用(fgetc等)来读取iOS下的文件流。或者从NSInputStream读取到NSData。