2013-04-28 3 views
0

Мое приложение использует 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.

ответ

4

В некоторых форматах сжатия аудиоплеер может изменить свою оценку продолжительности, поскольку он все больше и больше узнает о песне, играя (и, следовательно, расшифровывая) все больше и больше. Там Похожее наблюдение здесь:

Audio player duration changes while playing

Я думаю, вам нужно будет настроить длительность, выраженную ползунком, чтобы соответствовать изменениям аудиопроигрывателя в его знании продолжительности.

+0

Да, после публикации, я понял это. Спасибо Мэтт. – user592419