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

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

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

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: 看来苹果 电影播放器 示例也有同样的问题。

有帮助吗?

解决方案

您还可以通过在调用播放函数之前将初始播放时间设置为-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 上也能正常运行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top