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
- Play video
- hit button to jump to 9.3 seconds into the video
- 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?
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];
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];
cdasher pointed me in the right direction but this is what you should do:
Seek using seekToTime:toleranceBefore:toleranceAfter for sample accurate seeks. For this you must use AVPlayer not MPMediaPlayerController
CMTime npt = CMTimeMakeWithSeconds(9.3, 600);
[self.player seekToTime:npt toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];
I want to share my experience for MPMoviePlayerController mediaPlayer to play MP3.
[mediaPlayer setCurrentPlaybackTime:currentPlayBackTime]; // it is not working for MP3 file. This is work only for video.
i used for MP3 and it is working for IOS 11 and later.
[mediaPlayer setInitialPlaybackTime:currentPlayBackTime]; // play MP3 file from last position