Próbuję odtworzyć MP3 przez AVAudioPlayer
, które uważałem za dość proste. Niestety nie działa. Oto wszystko, co zrobił:AVAudioPlayer przestaje grać natychmiast z ARC
- Dla testów, stworzyłem nową aplikację dla systemu iOS (Single View) w Xcode.
Dodałem ramy AVFoundation do projektu, jak również
#import <AVFoundation/AVFoundation.h>
doViewController.m
I dodaje plik MP3 do folderu apps "dokumenty.
Zmieniłem
ViewControllers
viewDidLoad:
na następujące kwestie:
Kod:
- (void)viewDidLoad
{
[super viewDidLoad];
NSString* recorderFilePath = [NSString stringWithFormat:@"%@/MySound.mp3", [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]];
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:recorderFilePath] error:nil];
audioPlayer.numberOfLoops = 1;
[audioPlayer play];
//[NSThread sleepForTimeInterval:20];
}
Niestety, dźwięk oczywiście zatrzymuje się tuż po tym jak zaczyna grać. Jeśli odkomentuję numer sleepForTimeInterval
, będzie on odtwarzany przez 20 sekund, a następnie zatrzyma się. Ten problem występuje tylko podczas kompilacji z ARC, w przeciwnym razie działa bezbłędnie.
Nie trzeba zaczynać kolejnego wątku, aby odtwarzać dźwięk. Czy próbowałeś podać wskaźnik błędu, aby sprawdzić, czy coś jest rejestrowane? – isaac
jaki błąd dostałeś? – Daniel
Tak, przekazałem NSError do initWithContensOfURL. Pozostaje jednak zero, więc ... Nie mam żadnych błędów, po prostu przestaje grać od razu. – Phlibbo