Xcode: несколько аудио файлов, одна кнопка - PullRequest
0 голосов
/ 12 мая 2011

В Xcode 3.2.5 я хотел бы воспроизводить несколько аудиофайлов в последовательности (50+) с одного UIButton. Я пробовал несколько кодов, но они утечки памяти. Какие-либо предложения? Я все еще учусь, поэтому, пожалуйста, включите заголовки и коды файлов имплиментации. Заранее благодарю.

Ответы [ 2 ]

1 голос
/ 12 мая 2011

Используйте интерфейсы в службах Audio Queue (AudioToolbox / AudioQueue.h).Создайте один объект аудио-очереди для каждого звука, который вы хотите воспроизвести.Затем укажите время одновременного запуска первого аудиобуфера в каждой аудио-очереди, используя функцию AudioQueueEnqueueBufferWithParameters.

Для одновременных звуков в iPhone OS действуют следующие ограничения в зависимости от формата аудиоданных:

Аудио AAC, MP3 и ALAC (Apple Lossless): вы можете воспроизводить несколько звуков формата AAC, MP3 и ALAC одновременно;воспроизведение нескольких звуков этих форматов потребует ресурсов процессора для декодирования.Линейный PCM и IMA / ADPCM (аудио IMA4): Вы можете воспроизводить несколько линейных звуков формата PCM или IMA4 одновременно без проблем с ресурсами ЦП.
Взято из , воспроизводить несколько звуков одновременно

0 голосов
/ 17 мая 2011

Это просто концептуально, но как насчет (а) создания массива звуковых имен, которые вы хотите воспроизвести (это может быть во время выполнения), в правильном порядке, затем (б) написания функции, в которой каждый объект типа soundHandler проверяет, где он находится в массиве; если он не последний, он создает soundPlayer, загружает звук, воспроизводит и затем вызывает следующий soundHandler в массиве. (Если он последний, он просто конструирует / загружает / воспроизводит и, возможно, уведомляет родителя о том, что это сделано.) Каждый soundHandler (я просто придумываю это, вам придется написать его), а затем может завершить работу самостоятельно, когда завершится.

Если у вас возникнут проблемы с задержкой / загрузкой, вы всегда можете заставить каждый soundHandler вызывать n + 2 в массиве и, конечно, затем проверить, не является ли он предпоследним, а не концом.

Это больше того, что вы имели в виду?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...