3

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

不幸的是,我第二次按播放时,视频出现闪烁。

我只使用这段代码来播放视频

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

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

mp.movi​​eControlMode = MPMovieControlModeDefault;

[mp播放];

电影播放器​​ = mp;

[mp释放];

谁能告诉我问题出在哪里?提前致谢!

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

4

4 回答 4

4

您也可以通过在调用播放函数之前将初始播放时间设置为 -1.0 来实现

mp.initialPlaybackTime = -1.0;

将此代码放在调用您的播放方法之前。

于 2010-01-29T06:25:28.910 回答
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];
}
于 2010-01-11T15:44:12.937 回答
0

似乎唯一的解决方案是……为 3.1 制作应用程序

于 2010-02-04T08:27:38.737 回答
0

我也发现运行在OS 3.1或更高版本的模拟器上也能玩得很好。不会出现闪烁。但是当我添加的时候

initialPlaybackTime = -1.0

它也将在 OS 3.0 上运行良好。

于 2010-04-08T13:33:00.717 回答