MPMoviePlayerController第二次播放视频

时间:2010-01-11 13:46:44

标签: iphone objective-c video mpmovieplayer

我需要有可能在应用中播放多个视频。

不幸的是,第二次按下播放时,视频会闪烁。

我只使用此代码播放视频

  

NSURL * url = [[[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:@“Movie”ofType:@“m4v”]] autorelease];

     

MPMoviePlayerController * mp = [[MPMoviePlayerController alloc] initWithContentURL:url];

     

mp.movi​​eControlMode = MPMovieControlModeDefault;

     

[mp play];

     

moviePlayer = mp;

     

[mp release];

谁能告诉我哪里可以出问题? 提前谢谢!

更新1:似乎Apple MoviePlayer示例存在同样的问题。

4 个答案:

答案 0 :(得分:4)

您也可以在调用播放功能

之前将初始播放时间设置为-1.0
mp.initialPlaybackTime = -1.0;

在调用ur play方法之前输入此代码。

答案 1 :(得分:1)

我遇到了这个问题并通过使用通知系统在MPMoviePlayerController完成播放后执行回调并在那里释放播放器对象来解决它。

在播放电影之前添加通知:

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];

然后添加回调方法

-(void)myMovieFinished:(NSNotification*)aNotification
{
    MPMoviePlayerController *moviePlayer = [aNotification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerDidFinishNotification object:moviePlayer];
    [moviePlayer release];
}

答案 2 :(得分:0)

它认为唯一的解决方案是......制作3.1的应用

答案 3 :(得分:0)

我也发现运行OS 3.1或更高版本的模拟器可以很好地播放。它不会出现闪烁。但是当我添加

initialPlaybackTime = -1.0

它也将在OS 3.0上发挥出色。