айфон звуки и задержка - PullRequest
       20

айфон звуки и задержка

2 голосов
/ 07 октября 2009

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

Я использую экземпляры AVAudioPlayer для каждого звука. Есть ли лучший способ воспроизвести звуки и предотвратить эту задержку?

Вот код:

#import "MBImageView.h"
#import <AVFoundation/AVFoundation.h>

@implementation MBImageView

-(void)awakeFromNib
{
NSURL* audioFile = [NSURL fileURLWithPath[[NSBundlemainBundle] pathForResource:@"shaker" 
                                               ofType:@"caf"]]; 
    AudioServicesCreateSystemSoundID((CFURLRef)audioFile, &shortSound); 

}

- (id)initWithImage:(UIImage *)image{ 
    return self; 
}

- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
    AudioServicesPlaySystemSound(shortSound);
}


@end

Привет.

Ответы [ 3 ]

6 голосов
/ 12 октября 2009

Большинство этих звуков (AVAudioPlayer и AudioServices) воспроизводятся после окончания цикла запуска. То есть вы говорите «играть», и они попадают в очередь за игру, и они не начинают играть сразу.

Если вы хотите звук без задержек, вы используете Аудиоустройство :

Для обеспечения аудио с минимальной задержкой, особенно при одновременном ввод и вывод (например, для VoIP приложения), используйте блок ввода-вывода или Блок ввода / вывода для обработки голоса. Смотрите «Аудио Поддержка устройств в iPhone OS. ”

Вы также можете посмотреть Audio Toolbox :

Используйте платформу Audio Toolbox для проигрывать аудио с синхронизацией возможности, пакеты доступа входящее аудио, разбирать аудио потоки, конвертировать аудио форматы и записывать аудио с доступом к личности пакеты. Подробнее см. Аудио Ссылка на Framework Toolbox и Пример кода проекта SpeakHere.

1 голос
/ 08 октября 2009

Если это короткие звуки, которые вы не возражаете загрузить в память, System Sound Services на основе C *1002* может подойти вам лучше.

0 голосов
/ 16 октября 2009

Я использовал класс SoundEffect в Audio Toolbox с хорошими результатами. Мои короткие звуки воспроизводятся без задержки.

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

Надеюсь, это поможет.

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