Why does MPMoviePlayerController setCurrentPlaybackTime goes to the wrong time?

Ian1971 picture Ian1971 · Sep 9, 2011 · Viewed 8.6k times · Source

I am experience some weirdness with MPMoviePlayerController.

I am trying to set the currentPlaybackTime of a video whilst it is playing (file source). Here is an example of what happens

  1. Play video
  2. hit button to jump to 9.3 seconds into the video
  3. Play state changes as follows:

a) Play state = 5 (MPMoviePlaybackStateSeekingBackward). currentPlaybackTime = 15.74 (this is the time I had got to when I pressed the button)

b) Play state = 1 (MPMoviePlaybackStatePlaying). currentPlaybackTime = 7.32

It doesn't seem to matter what I try and set currentPlaybackTime to it ends up as 7.32.

Some extra info: I get this behaviour even using the built in controls on MPMoviePlayerController. e.g. If I scroll it forward to 15 seconds it jumps back to 7.32

Any ideas? Is it something to do with the media file?

Answer

cdasher picture cdasher · Sep 10, 2011

You should seek using seekToTime or seekToTimeWithSeconds.

 CMTime npt = CMTimeMake(9,1);
 [self.player seekToTime:npt];

or

  CMTime npt = CMTimeMakeWithSeconds(9.3, 600);
   [self.player seekToTime:npt toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];