Переключение аудио в реальном времени для iPhone - PullRequest
5 голосов
/ 15 февраля 2011

Я пытаюсь найти лучший способ воспроизведения бесшовной петли аудио, чтобы пользователь мог переключиться на другую в кратчайшие сроки, при этом доступно приличное количество (30-150) очень коротких петель. Хватит ли OpenAL для этого или мне нужно углубиться в Audio Units? Документация Apple гласит, что для обратной связи в режиме реального времени, такой как инструмент, аудиоустройства - это правильный выбор.

Я просто хочу узнать мнение сообщества по этому поводу, и любые ссылки и примеры проектов будут с благодарностью.

Ответы [ 4 ]

3 голосов
/ 16 февраля 2011

Вы можете использовать AVAudioPlayer для плавного зацикливания сжатого аудиофайла (numberOfLoops = -1). Я предлагаю использовать файлы CAF в кодировке IMA4, поскольку, по слухам, они выигрывают от аппаратной декомпрессии (сохранение циклов ЦП для других целей).

Чтобы уменьшить размер файла, вы можете снизить скорость передачи данных (попробуйте 96 кбит / с) и / или использовать моно.

Обратите внимание, что AVAudioPlayer не позволяет изменять темп или частоту воспроизведения.

2 голосов
/ 15 февраля 2011

это, вероятно, не совсем отвечает на ваш вопрос, но вы когда-нибудь смотрели на Финч ?Просто взгляд на источник может дать некоторые указатели.

  • Йоханнес
1 голос
/ 16 февраля 2011

Если вам нужно переключиться на другой аудиосэмпл без задержки воспроизведения, вам нужно использовать OpenAL. AVAudioPlayer задерживается перед началом воспроизведения.

Вы можете минимизировать эту задержку, вызвав prepareToPlay, но она не всегда полностью устранит задержку. Кроме того, если у вас есть от 30 до 150 семплов, которые пользователь выбирает для воспроизведения, вы заранее не будете знать, какие семплы необходимо предварительно загрузить.

Вот краткое изложение плюсов и минусов между OpenAL и AVAudioPlayer: http://kstenerud.github.com/ObjectAL-for-iPhone/documentation/index.html#choosing_sec

0 голосов
/ 26 июля 2016

Я использовал для этого аудио-библиотеку Cocos2D, и она оказалась намного более производительной, чем я ожидал. AVAudioPlayer оказался немного более низкого уровня, чем мне нужно.

...