В моем проекте у меня есть AVAudioPlayer, который воспроизводит песню. После того, как я сделаю паузу и снова сыграю, он начинается, вместо того, чтобы играть там, где я сделал паузу. Почему это происходит? Кроме того, когда я впервые нажимаю игру, он загружает песню около 3-4 секунд. Я решил, что решил это, загрузив его на другой поток, но он все еще загружается слишком медленно (по крайней мере, вид больше не замерзает). Как я могу это исправить? Вот код:AVAudioPlayer pausing issue
- (IBAction)play:(id)sender {
songIsCurrentlyPaused = NO;
if(songIsCurrentlyPaused==YES){
[self.background play];
} else {
playQueue = dispatch_queue_create("volume_change", NULL);
dispatch_async(playQueue, ^{ NSString *filePath =
[[NSBundle mainBundle]pathForResource:@"some_song" ofType:@"mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath];
self.background = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
self.background.delegate = self;
[self.background setNumberOfLoops:1];
[self.background setVolume:0.5];
[self.background play]; });
[trackNameLabel setText:@"Currently playing :\n some_song"];
self.timer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(updateProgressBar) userInfo:nil repeats:YES];
}
}
- (IBAction)pause:(id)sender {
songIsCurrentlyPaused = YES;
[self.background pause];
[trackNameLabel setText:@"Currently playing : some_song (paused)"];
[self.progressBar setProgress:self.background.currentTime/self.background.duration animated:YES];
}
Спасибо!
Проблема с паузой решена! Спасибо, очень признателен! Но загрузка по-прежнему медленная :( – nemesis
@nemesis: я отредактировал свой ответ. Не могу он код, так как я не нахожусь на моем mac на данный момент. Он должен работать, но может потребоваться некоторая настройка. Идея заключается в предварительной загрузке музыка, если вы можете переместить предварительную загрузку на какой-то фоновый поток, тогда должна быть (почти) нет задержки. –
Ну, это работает, если вы нажмете кнопку воспроизведения через некоторое время, когда изображение загрузится. Не существует способа полностью удалить задержка? Спасибо! – nemesis