Объем памяти для распаковки файлов
Я хочу обрабатывать аудио в автономном режиме на iOS, но у меня есть вопрос об использовании памяти. Если я использую AVAssetReader для распаковки MP3 в необработанные данные PCM, объем памяти будет огромным. Итак, как мне поступить с обработкой (в автономном режиме FFT) mp3-файла, если распаковка приведет к тому, что приложение использует слишком много памяти? Я предполагаю, что мне нужно каким-то образом транслировать его, но я не знаю, как это сделать в iOS.
1 ответ
AVAssetReader может записывать в файл с помощью AVAssetWriter.
Чтобы получить PCM, вы можете написать формат файла WAV, а затем пропустить заголовок (и) RIFF при чтении. Тогда вам нужно всего лишь извлечь столько данных из файла WAV в память за один раз, сколько требует длина вашего БПФ. Это должно вызвать проблему с объемом памяти, только если каждый FFT имеет длину более 1 миллиона образцов.
Вы можете использовать posix-вызовы C/unix (fgetc и т. Д.) Для чтения потока файлов под iOS. Или читать из NSInputStream в NSData.