MPMoviePlayerController 播放视频第二次

3
我需要在应用程序中播放多个视频的可能性。
不幸的是,第二次按下播放按钮时,视频会出现闪烁。
我只使用以下代码来播放视频:
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:似乎苹果MoviePlayer示例也有同样的问题。
4个回答

4

在调用播放函数之前,您可以通过将初始播放时间设置为-1.0来完成此操作。

mp.initialPlaybackTime = -1.0;

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

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

仍然存在相同的问题。 - mxg
你确定原始的movieplayercontroller没有被保留在其他地方吗? - Ken Pespisa

0

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

initialPlaybackTime = -1.0

它也将在 OS 3.0 上表现良好。


0

看起来唯一的解决方案是...为3.1版本制作应用程序


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接