Можно ли загрузить сжатый аудиофайл прямо в буфер, без преобразования? - PullRequest
0 голосов
/ 01 сентября 2011

Я занимаюсь разработкой приложения для iOS, которое должно обрабатывать несколько стереофонических аудиофайлов (длительностью от нескольких секунд до четырех минут) одновременно, воспроизводить до трех одновременно одновременно, синхронизироваться с помощью AUGraph на основе многоканального микшера. Мои аудиофайлы сжимаются - как MP3, AAC или CAF - но когда они загружаются в буферы, преобразуются в 32-битный AudioUnitSampleType формат (мой код основан на Apple iPhoneMultichannelMixerTest ). Излишне говорить, что при таких больших буферах память приложения очень быстро становится проблемой.

В документации Apple говорится, что устройства iOS могут декодировать один файл MP3 / AAC на аппаратном уровне за раз, рекомендуя формат CAF (IMA4) для других файлов, требующих декодирования в программном обеспечении. Прежде чем я разработаю систему для динамической загрузки аудио во время воспроизведения, я хочу знать, можно ли загружать сжатые файлы напрямую в буферы (тем самым значительно снижая требования к памяти) и чтобы мой AUGraph конвертировал их на лету?

1 Ответ

0 голосов
/ 27 марта 2012

Чтобы ответить на мой собственный вопрос, если все, что вам нужно, - это точная синхронизация воспроизведения, без пользовательской обработки, возможной с помощью обработки аудиоустройства, то обязательно посмотрите на AVPlayer , AVAsset * 1004 AVFoundation. * и AVComposition классы.

Хотя этот метод выглядит более подходящим для воспроизведения видео, он отлично работает, используя только аудио ресурсы. Эти классы обрабатывают всю загрузку и буферизацию медиаресурсов (включая CAF, AAC и MP3), используя при этом небольшой объем памяти, и могут быть жестко синхронизированы с помощью AVURLAssetPreferPreciseDurationAndTimingKey. Кроме того, он имеет полезные методы обратного вызова, которые могут быть установлены для вызова в определенное время во время воспроизведения (среди прочего, для обновления пользовательского интерфейса). Наконец, когда он стал доступен на Mac (10.7+), это хорошее решение для универсальной разработки Какао.

...