Использование Finch для воспроизведения звуков на iphone - PullRequest
1 голос
/ 15 июля 2009

У меня есть приложение, которое имеет два вида звуков: 1. Фоновые звуки, повторяющиеся навсегда до следующего просмотра. 2. Звучит клипы, которые можно воспроизвести отдельно или все сразу.

Ранее я пытался использовать AVAudioPlayer, но всегда был очень маленький интервал молчания между двумя клипами (для которого я не нашел никакого решения, если у вас есть, пожалуйста, напишите в ответ), поэтому перешел на Finch, например. http://github.com/zoul/Finch/tree/master

Теперь вот сделка: Я использую AVAudioPlayer для воспроизведения зацикленных звуков, а Finch - для воспроизведения этих клипов. Я делаю это:

- (void)viewDidLoad {
    [super viewDidLoad];

    soundEngine = [[Finch alloc] init];
/***
CLIPPED
***/
}
-(void) playclip:(id) sender {
    NSString *fullPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"sitar.wav"];
    NSLog(@"Song is %@", fullPath);
    clip = [[Sound alloc] initWithFile:fullPath];
    NSLog(@"Clip Length: %@", clip.length);
    NSLog(@"Clip Playing ? : %d", clip.playing);
    [clip play];
    NSLog(@"Played Clip");
}

Это почти тот же код, что и в демонстрационном проекте, который есть в репозитории git. Но по какой-то причине я получаю это на консоли:

Song is /Users/shoaibi/Library/Application Support/iPhone Simulator/User/Applications/17FBA26F-6047-4D56-9E45-ADAFE07B7234/Test.app/sitar.wav
Failed to create OpenAL source, error code a004.
Clip Length: (null)
Clip Playing ? : 0
Played Clip

Указатель ls в каталоге, напечатанном на консоли, показывает, что существует файл sitar.wav с правильными разрешениями. В чем может быть проблема? может быть фоновый звук AVAudioPlayer, который я перестаю использовать:

- (void)viewWillAppear:(BOOL)animated {

    //Stop the background music before my ears bleed :P
    d = [[UIApplication sharedApplication] delegate];
    if (d.bg.playing)
    {
        [d.bg stop];
        NSLog(@"Background music stoped");
    }

}

не освобождает ли звуковой ресурс?

Ответы [ 2 ]

3 голосов
/ 16 июля 2009

Latest Finch теперь проверяет, инициализируется ли OpenAL при инициализации нового Sound. Если текущий контекст OpenAL не установлен, потому что вы забыли или не смогли инициализировать Finch, вы получите лучшее сообщение об ошибке. Попробуйте, возможно, ваш код инициализации содержит ошибки.

0 голосов
/ 21 февраля 2011

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

...