MPMoviePlayerController 第二次播放视频
-
19-09-2019 - |
题
我需要能够在一个应用程序中播放多个视频。
不幸的是,当我第二次按播放时,视频出现闪烁。
我只使用这个代码来播放视频
NSURL *url = [[[NSURL alloc]initFileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Movie" ofType:@"m4v"]] autorelease];
MPMoviePlayerController *mp = [[MPMoviePlayerController alloc]initWithContentURL:url];
mp.movieControlMode = MPMovieControlModeDefault;
[MP播放];
电影播放器 = mp;
[MP释放];
谁能告诉我问题出在哪里?提前致谢!
更新1: 看来苹果 电影播放器 示例也有同样的问题。
解决方案
您还可以通过在调用播放函数之前将初始播放时间设置为-1.0来实现
mp.initialPlaybackTime = -1.0;
将此代码放在调用您的播放方法之前。
其他提示
我遇到了这个问题,并通过使用通知系统在 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];
}
看来唯一的解决办法就是……制作 3.1 版本的应用程序
我还发现运行在OS 3.1或更高版本的模拟器上可以很好地玩。它不会出现闪烁。但是当我添加
initialPlaybackTime = -1.0
它在 OS 3.0 上也能正常运行。
不隶属于 StackOverflow