1

iOS で音声をオフラインで処理したいのですが、メモリ使用量について質問があります。AVAssetReader を使用して MP3 を未加工の PCM データに解凍すると、メモリ フットプリントが膨大になります。では、圧縮解除によってアプリが大量のメモリを使用するようになる場合、mp3 ファイルを処理 (オフライン FFT) するにはどうすればよいでしょうか? どうにかしてストリーミングする必要があると思いますが、iOS でこれを行う方法がわかりません。

4

1 に答える 1

0

AVAssetReader は、AVAssetWriter を使用してファイルに書き込むことができます。

PCM を取得するには、WAV ファイル形式を書き込んでから、読み取り時に RIFF ヘッダーをスキップします。次に、FFT の長さが必要とするだけの量のデータを一度に WAV ファイルからメモリに取り込むだけで済みます。これは、各 FFT が 100 万サンプルをはるかに超える場合にのみ、メモリ フットプリントの問題を引き起こします。

C/unix posix 呼び出し (fgetc など) を使用して、iOS でファイル ストリームを読み取ることができます。または、NSInputStream から NSData に読み込みます。

于 2011-09-25T18:13:35.030 に答える