Остановка и быстрое воспроизведение AudioQueue - PullRequest
3 голосов
/ 06 января 2011

У меня есть аудио-очередь, которая воспроизводится, останавливается, правильно останавливается, но я считаю, что функция AudioQueueStop () требует много времени для выполнения.

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

В моем проекте у меня есть несколько аудио-очередей, которые я держу вокруг, чтобы проигрывать определенные звуки снова и снова. Есть ситуация, когда я должен остановить некоторые из этих звуков, а затем немедленно воспроизвести их и многие другие сразу. Это не так уж плохо, если есть только несколько аудио-очередей, для которых я это делаю, но это займет много времени, если есть много, которые мне нужно остановить и перезапустить.

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

1 Ответ

2 голосов
/ 18 января 2012

AudioQueue может быть грязным для такого рода вещей.Трудно остановить середину буфера очереди, и это означает, что текущий буфер будет продолжать играть.Кроме того, вам приходится иметь дело с задержками.

Для быстрой остановки и воспроизведения с низкой задержкой я бы посоветовал использовать RemoteIO AudioUnit.

Вы можете найти отличное руководство с кодом здесь:

ИспользованиеАудиоустройство RemoteIO

...