iOS: AVPlayer seekToTime reinicia la reproducción del elemento actual
Estoy creando una aplicación que usa AVPlayer. En una de mis vistas, tengo un UISlider con el que el usuario debería poder desplazarse hacia adelante y hacia atrás. Estoy teniendo problemas para conseguirseekToTime
para trabajar como yo quiera. Cuando trato de cambiar el tiempo, la reproducción comienza desde 0, y no estoy seguro de cómo resolver esto. Mi implementación actual se ve así:
[self.progressSlider addTarget:self action:@selector(sliderValueChanged) forControlEvents:UIControlEventValueChanged];
[self.progressSlider addTarget:self action:@selector(sliderReleased) forControlEvents:UIControlEventTouchUpInside];
- (void)sliderValueChanged {
[...]
[player pause];
}
- (void)sliderReleased {
float timeInSecond = self.progressSlider.value;
timeInSecond *= 1000;
// I have trie to hard code this value, but I get the same result.
CMTime cmTime = CMTimeMake(timeInSecond, NSEC_PER_SEC);
[player.currentItem seekToTime:cmTime toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero completionHandler:^(BOOL finished) {
if (finished) {
[player play];
}
}];
}
¿Alguna idea sobre lo que estoy haciendo mal?
Puedo mencionar que transmito audio usando AVPlayer:playerItemWithURL
si eso hace alguna diferencia