Несколько AVAudioPlayers: я могу получить только первый инициализированный для воспроизведения - PullRequest
0 голосов
/ 10 апреля 2009

У меня есть куча аудиоклипов с именами от sound1.mp3 до soundN.mp3. Я хочу воспроизводить их случайным образом на ощупь, поэтому я настроил AVAudioPlayer для каждого клипа, который хранится в проигрывателях (AVAudioPlayer **). После того, как я инициализирую все, единственный звук, который я могу воспроизвести, это sound1.mp3. Что я делаю не так?

Спасибо за помощь, код инициализации приведен ниже.

players = (AVAudioPlayer**) malloc ( sizeof (AVAudioPlayer*) * NUM_CLIPS);
NSString* path;
NSString* name;
for(uint i = 0; i < NUM_CLIPS; i++){
    name = [NSString stringWithFormat: @"sound%d", i+1];
    path = [[NSBundle mainBundle] pathForResource:name ofType:@"mp3"];
    players[i] = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    [players[i] setMeteringEnabled:YES];
    [players[i] prepareToPlay];
}

Ответы [ 3 ]

2 голосов
/ 11 апреля 2009

Причина этого в том, что файлы mp3 / aac декодируются аппаратно и могут быть декодированы только в одно время.

0 голосов
/ 21 мая 2009

Джеймс Брукс (jamesbrooks dot net) говорит, что изменение файлов * .mp3 в * .caf позволило ему воспроизводить несколько звуков с помощью AVAudioPlayer. Лично я, однако, не могу заставить воспроизводить файлы * .caf одновременно, но я могу получить файлы * .aiff для одновременного воспроизведения.

0 голосов
/ 10 апреля 2009

Неважно, похоже, это была проблема с тем, как работает prepareToPlay

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