Объем памяти для распаковки файлов

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам