AVPlayer seekToTime does not play at correct position AVPlayer seekToTime does not play at correct position ios ios

AVPlayer seekToTime does not play at correct position


int32_t timeScale = self.player.currentItem.asset.duration.timescale;CMTime time = CMTimeMakeWithSeconds(77.000000, timeScale);[self.player seekToTime:time toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];

I had a problem with 'seekToTime'. I solved my problem with this code. 'timescale' is trick for this problem.

Swift version:

let playerTimescale = self.player.currentItem?.asset.duration.timescale ?? 1let time =  CMTime(seconds: 77.000000, preferredTimescale: playerTimescale)self.player.seek(to: time, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero) { (finished) in /* Add your completion code here */}


My suggestion: 1) Don't use [avplayer seekToTime: toleranceBefore: toleranceAfter: ], this will delay your seek time 4-5 seconds.

2) HLS video cut to 10 seconds per segment. Your chapter start postion should fit the value which is multipes of 10. As the segment starts with I frame, on this way, you can get quick seek time and accurate time.


please use function like [player seekToTime:CMTimeMakeWithSeconds(seekTime,1)] .
Because your tolerance value kCMTimeZero will take more time to seek.Instead of using tolerance value of kCMTimeZero you can use kCMTimeIndefinite which is equivalent the function that i specified earlier.


matomo