iOS AudioServicesAddSystemSoundCompletion обратный вызов с задержкой в ​​1 секунду - PullRequest
0 голосов
/ 10 августа 2011

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

Я использую процедуру обратного вызова AudioServicesAddSystemSoundCompletion, чтобы определитькогда закончится воспроизведение звукового файла, указанного в SystemSoundID.В этот момент вызывается статический метод обратного вызова C, а затем вызывается обратно в экземпляр для воспроизведения другого звука.

Однако я получаю 1-секундную задержку между завершением звука и попаданием функции обратного вызова.

Звук обрезается без лишних пробелов в конце.Я поместил NSLog в несколько ключевых мест для подтверждения, и первый звук воспроизводится - остальная часть кода ничего не делает - просто ждет «ввода», а затем обратный вызов обычно срабатывает через одну секунду после завершения звука.

Я посмотрел в официальной документации и не могу найти причину для этого - ни 10 минут поиска в Google не предлагают никакого решения.

У кого-нибудь есть идеи, пожалуйста?

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 сентября 2011

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

НЕТ задержки. (Ложка / что угодно;))

Проблема была вызвана «функцией» пользовательского интерфейса приложения, которое мы использовали для вырезания, обрезки и экспорта аудиофайлов ... GarageBand.

Похоже, что если вы обрежете звуковую дорожку в GarageBand до тех пор, пока не будет виден и воспроизводится только тот звук, который вам нужен - даже при зацикливании, - а затем экспортируете эту дорожку в виде файла .aif ... Она помещается БЕЗ ШОУ ИЛИ ПРЕДУПРЕЖДЕНИЯ - все обрезанные и вырезанные части дорожки НАЗАД !!!

Так что, даже если вы снова откроете трек в ГБ через несколько дней, все, что вы видите и слышите, это урезанная урезанная версия. Однако обрезка - это просто метаданные файла - точно так же, как обрезка iTunes ... Абсолютно бессмысленно.

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

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

Спасибо тем, кто пытался придумать причину, и, в частности, вышеприведенный плакат за то, что нашли время попытаться помочь.

0 голосов
/ 02 сентября 2011

Я не знаю о задержке, я никогда не испытывал этого.Но, может быть, вы могли бы попробовать это .Это оболочка target-c для SystemSoundID и некоторых связанных с ним функций, включая обратный вызов завершенияЭто должно быть проще использовать вместо функций C.

...