У меня есть приложение, которое имеет два вида звуков:
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");
}
}
не освобождает ли звуковой ресурс?