Объем памяти для распаковки файлов - PullRequest
1 голос
/ 25 сентября 2011

Я хочу обрабатывать аудио в автономном режиме на iOS, но у меня есть вопрос об использовании памяти. Если я использую AVAssetReader для распаковки MP3 в необработанные данные PCM, объем памяти будет огромным. Так как же мне обработать (в автономном режиме FFT) mp3-файл, если распаковка приведет к тому, что приложение использует слишком много памяти? Я предполагаю, что мне нужно каким-то образом транслировать его, но я не знаю, как это сделать в iOS.

1 Ответ

0 голосов
/ 25 сентября 2011

AVAssetReader может записывать в файл с помощью AVAssetWriter.

Чтобы получить PCM, вы можете записать формат файла WAV, а затем пропустить заголовок (и) RIFF при чтении. Тогда вам нужно всего лишь извлечь столько данных из файла WAV в память за один раз, сколько требует длина вашего БПФ. Это должно вызвать проблему с объемом памяти, только если каждый FFT имеет длину более 1 миллиона сэмплов.

Вы можете использовать вызовы posix C / unix (fgetc и т. Д.) Для чтения потока файлов под iOS. Или читать из NSInputStream в NSData.

...