我需要有可能在应用中播放多个视频。
不幸的是,第二次按下播放时,视频会闪烁。
我只使用此代码播放视频
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];
谁能告诉我哪里可以出问题? 提前谢谢!
更新1:似乎Apple MoviePlayer示例存在同样的问题。
答案 0 :(得分:4)
您也可以在调用播放功能
之前将初始播放时间设置为-1.0mp.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上发挥出色。