2012-03-08 17 views
0

私は、ビューをタッチした後でムービーを再生するアプリケーションを持っています。私はビューにボタンを配置します。ボタンをクリックすると、2番目のムービーが再生されます。しかしそれはそれがロードされ、短い黒い画面が表示されるようです。 viewDidLoad2つのビデオを連続して再生すると、黒い画面が短く表示されます。

私はこの後 startAnimation

- (IBAction)startAnimation:(id)sender { 

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

を呼ぶストーリーボードtouch上で、その後

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

初期化:私は今、黒い画面を避けたい...

がHERESにコードムービーが終了しましたボタンを設定しました

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

は、ボタンにタッチした後に、第2のアニメーションが

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

を開始しますが、ここで短い黒い画面がMOVIE2がロードされた後、再生しているだろうが、表示されます。

どのようにして黒い画面を避けることができますか?

Greetz

答えて

1

MPMoviePlayerControllerを使用するときは、完全に動画間の事前バッファリング遅延(黒相)を取り除くことができなくなります。

代わりにAVQueuePlayerを使用してください。

AVQueuePlayerは、AVPlayerのサブクラスであり、複数の項目を順番に再生するために使用します。

その他のquestions and issuesを参照してください。

+0

私は1つのコメントのバグを報告します... "iOS 5の時点では、AVQueuePlayerはもはやプリバッファではなく、iOS 4の次のトラックをプリバッファしていたようです。 – spankmaster79

+0

@ spankmaster79どのようにあなたのために働いたのですか? – Till

+1

それは私のために働いた。完成したビデオにボタンを配置する際に問題がありますが、それは別の問題です – spankmaster79

関連する問題