Мое приложение использует AVAudioPlayer для воспроизведения музыкальных файлов. У него также есть UISlider, чтобы настроить, где в песне воспроизводится. Однако в UISlider есть странная ошибка в том, что она, похоже, меняет продолжительность звукового проигрывателя.Продолжительность изменения AVAudioPlayer
Когда начинается песня, как часть процесса, значения устанавливаются следующим образом:
audioPlayer.currentTime = 0;
seekingSlider.maximumValue = [audioPlayer duration];
seekingSlider.value = audioPlayer.currentTime;
Это не работает без проблем. Затем у меня есть NSTimer, который обновляет playtime и seekSlider. У этого также нет проблем. Когда пользователь меняет поиск, он переходит к следующей функции seekingChanged
.
- (IBAction)seekingChanged:(id)sender
{
audioPlayer.currentTime = seekingSlider.value;
[self updatePlayedTimeLabel:audioPlayer.currentTime];
}
- (void)updatePlayedTimeLabel:(NSTimeInterval)time {
playedTime.text = [NSString stringWithFormat:@"%d:%02d", (int)time/60, (int)time % 60, nil];
[playedTime sizeToFit];
}
Обратите внимание, что ни в коем случае не пишу на audioPlayer.duration. Я только читал от него в начале и в различных заявлениях NSLog, чтобы отлаживать то, что происходит. К моему удивлению, это меняется. Вот один пример выходных данных в начале песни, сразу после установки значения:
after setting, seeking slider is at 0.000000/278.981384, audioplayer is at 0.000000/278.981375
Вот еще один, как раз после паузы ему 55 секунд:
pausing, seeking slider is at 55.884716/278.981384, audioplayer is at 55.946236/274.689354
Есть известная ошибка с аудиоплеера изменить продолжительность? Это проявляется как плохая ошибка, когда пользователь меняет слайдер, и он переходит к следующей песне, потому что вызывается audioPlayerDidFinishPlaying.
Да, после публикации, я понял это. Спасибо Мэтт. – user592419