Reputation: 21254
I need to have the possibility to play more than one video in an app.
Unfortunately, the second time I press play, video appears blinking.
I use only this code for playing vide
NSURL *url = [[[NSURL alloc]initFileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Movie" ofType:@"m4v"]] autorelease];
MPMoviePlayerController *mp = [[MPMoviePlayerController alloc]initWithContentURL:url];
mp.movieControlMode = MPMovieControlModeDefault;
[mp play];
moviePlayer = mp;
[mp release];
Can anyone tell me where can be the problem? Thanks in advance!
UPDATE 1: It seems that the Apple MoviePlayer example has the same problem.
Upvotes: 3
Views: 6496
Reputation: 322
I also find run on the OS 3.1 or later version of simulator can be played well.It won't appears blinking.But when I add
initialPlaybackTime = -1.0
it will also play well on OS 3.0.
Upvotes: 0
Reputation: 2351
you can also do it by setting the initial playback time to -1.0 before calling the play function
mp.initialPlaybackTime = -1.0;
Put this code before ur play method is called.
Upvotes: 4
Reputation: 22284
I had this problem and solved it by using the notification system to execute a callback after the MPMoviePlayerController finishes playing, and releasing the player object there.
Add a notification before you play the movie:
NSURL *url = [[[NSURL alloc]initFileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Movie" ofType:@"m4v"]] autorelease];
MPMoviePlayerController *mp = [[MPMoviePlayerController alloc]initWithContentURL:url];
mp.movieControlMode = MPMovieControlModeDefault;
//***Add this line***
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:mp];
[mp play];
Then add the callback method,
-(void)myMovieFinished:(NSNotification*)aNotification
{
MPMoviePlayerController *moviePlayer = [aNotification object];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerDidFinishNotification object:moviePlayer];
[moviePlayer release];
}
Upvotes: 1