iOS Advanced Audio API для распаковки формата
На iOS возможно ли получить аудиопоток пользователя в распакованном формате? Например, MP3 возвращается как WAV, который можно использовать для анализа звука? Я относительно новичок в платформе iOS и помню, что это было невозможно в старых версиях iOS. Я читал, что в iOS 4 добавлены некоторые передовые API, но я не уверен, где можно найти документацию / примеры для них.
3 ответа
Если вы не возражаете против использования API для iOS 4.1 и выше, вы можете попробовать использовать AVAssetReader
класс и друзья. В этом похожем вопросе у вас есть полный пример того, как извлечь видеокадры. Я ожидаю, что то же самое будет работать для аудио, и приятно то, что читатель имеет дело со всеми деталями декомпрессии. Вы даже можете сделать композицию с AVComposition
объединить несколько потоков.
Эти классы являются частью AVFramework, которая позволяет не только читать, но и создавать собственный контент.
У Apple есть пример OpenAL по адресу http://developer.apple.com/library/mac/, где Scene.m должен вас заинтересовать.
В документации Apple есть такая картина, где платформа Core Audio ясно показывает, что она выдает MP3. В нем также говорится, что вы можете получить доступ к аудиоустройствам более радикальным способом, если вам это нужно.
В этом же документе Core Audio содержится также некоторая информация об использовании MIDI, если она может вам помочь.
Изменить: сегодня вам повезло.
В этом примере аудиофайл загружается и подается в граф AudioUnit. Вы можете довольно легко написать собственный AudioUnit для включения в этот график, который будет анализировать поток PCM по вашему усмотрению. Вы даже можете сделать это в функции обратного вызова, хотя это, вероятно, не очень хорошая идея, потому что обратные вызовы должны быть максимально простыми.