2012-03-08 131 views
0

我有一个应用程序,在触摸视图后再播放电影,然后完成电影。我在视图上放置了一个按钮。点击按钮后会播放第二部电影。但它似乎只是然后加载和一个短的黑屏出现。我想避免现在黑屏......连续播放两个视频导致短黑屏

继承人的代码:

初始化在viewDidLoad

[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

NSString *movpath = [[NSBundle mainBundle] 
        pathForResource:@"movie1" 
        ofType:@"m4v"]; 

mpviewController = 
[[MPMoviePlayerViewController alloc] 
initWithContentURL:[NSURL fileURLWithPath:movpath]]; 

[[NSNotificationCenter defaultCenter] 
addObserver:self 
selector:@selector(movieFinishedCallback:)             
name:MPMoviePlayerPlaybackDidFinishNotification 
object:nil]; 


mp = [mpviewController moviePlayer]; 
// [mp setMovieControlMode:MPMovieControlModeHidden]; 
// [mp.view setFrame:CGRectMake(0, 0, 250, 263)]; 
mp.controlStyle = MPMovieControlStyleNone;  
mp.shouldAutoplay = NO; 

[mp prepareToPlay]; 
[mp pause]; 

然后在故事板触摸我打电话startAnimation

- (IBAction)startAnimation:(id)sender { 

    NSLog(@"Animation 1"); 
    [self.view addSubview:mpviewController.view]; 
    [mp play]; 
} 

在此之后电影完成我设置按钮

- (void) movieFinishedCallback:(NSNotification*) aNotification { 
    NSLog(@"...movie done"); 

// generate start button for animation 2 
startAnimation2Button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
startAnimation2Button.tag = 1; 
[startAnimation2Button addTarget:self action:@selector(startAnimation2:) forControlEvents:UIControlEventTouchUpInside]; 
startAnimation2Button.frame = CGRectMake(130, 230, 070, 070); 
startAnimation2Button.userInteractionEnabled = YES; 
startAnimation2Button.alpha = 0.1; 

[self.view addSubview:startAnimation2Button]; 
} 

然后单击按钮触摸之后,第二个动画开始

- (IBAction)startAnimation2:(id)sender { 

    NSLog(@"Animation 2"); 
    NSString *movpath = [[NSBundle mainBundle] 
        pathForResource:@"movie2" 
        ofType:@"m4v"]; 
    [mp setContentURL:[NSURL fileURLWithPath:movpath]]; 

    [[NSNotificationCenter defaultCenter] 
     addObserver:self 
     selector:@selector(movieFinishedCallback2:)             
     name:MPMoviePlayerPlaybackDidFinishNotification 
     object:nil]; 

    [mp play]; 
} 

但这里会出现一个短暂的黑屏,可能同时剧场2被加载,然后播放。

如何避免黑屏?

格尔茨

回答

1

使用MPMoviePlayerController时,您将无法完全摆脱视频之间的预缓冲延迟(黑色相)。

改为使用AVQueuePlayer

AVQueuePlayerAVPlayer的一个子类,用于按顺序播放多个项目。

关于这个问题,请参阅其他questions and issues

+0

我会尝试一个,但有一条评论会让我失望......“从iOS 5开始,看起来AVQueuePlayer不再预缓冲,它预先缓冲了iOS 4中的下一首曲目。” – spankmaster79 2012-03-08 12:45:27

+0

@ spankmaster79它是如何为你工作的? – Till 2012-03-15 19:09:48

+1

它确实为我工作。在完成的视频中放置按钮时出现问题,但似乎是另一个问题 – spankmaster79 2012-03-19 09:27:43