Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does MPMoviePlayerController setCurrentPlaybackTime goes to the wrong time?

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?

like image 330
Ian1971 Avatar asked Sep 09 '11 15:09

Ian1971


2 Answers

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];
like image 172
cdasher Avatar answered Oct 24 '22 11:10

cdasher


This is a late response, but I found a solution to my issue which was similar. You can modify the playback as follows:

#define START_TIME 50.0f
#define END_TIME   START_TIME + 20.0f  //play for 20 seconds

MPMoviePlayerController *player = [self moviePlayerController];
[player stop];
[player setInitialPlaybackTime:START_TIME];
[player setEndPlaybackTime:END_TIME];
[player play];
like image 25
Chris Danielson Avatar answered Oct 24 '22 12:10

Chris Danielson