2010-12-11 7 views
1

私はMPMoviePlayerControllerを使用して、Cocos2Dを使用するアプリケーション内でムービーを再生しています。しかし、ムービーが実行されると、ムービーのオーディオの最後の2/3しか再生されません。最初の3分の1は映画が黙っているということではありません。ムービーの再生が始まると、ムービーの1/3の位置でオーディオの再生が開始されます。言い換えると、オーディオとビデオは同期していません。MPMoviePlayerControllerのビデオとオーディオが同期していない

私はiOS 4.2を使用しており、最新のxCodeにアップグレードしました。以下は私が使用しているコードです。誰かがなぜこれが起こっているのか教えてもらえますか?

- (id) init 
{ 
    self = [super init]; 
    if (self != nil) 
    { 
     NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]  
          pathForResource:@"SomeMovie" ofType:@"m4v"]]; 
     MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] 
          initWithContentURL:url]; 
     // Register to receive a notification when the movie has finished playing. 
     [[NSNotificationCenter defaultCenter] addObserver:self 
            selector:@selector(PlayBackDidFinish:)   
             name:MPMoviePlayerPlaybackDidFinishNotification 
               object:moviePlayer]; 

     moviePlayer.controlStyle = MPMovieControlStyleNone; 
     moviePlayer.shouldAutoplay = YES; 
     [moviePlayer.view setTransform:CGAffineTransformMakeRotation((float)M_PI_2)]; 
     [moviePlayer.view setFrame:[[UIScreen mainScreen] bounds]]; 
     [[[CCDirector sharedDirector] openGLView] addSubview:moviePlayer.view]; 
    } 
    return self; 
} 

- (void) PlayBackDidFinish:(NSNotification *)notification 
{ 
    MPMoviePlayerController *moviePlayer = [notification object]; 
       [[NSNotificationCenter defaultCenter] removeObserver:self 
            name:MPMoviePlayerPlaybackDidFinishNotification 
               object:moviePlayer]; 

    [moviePlayer.view removeFromSuperview]; 

    [moviePlayer release]; 
} 

答えて

0

このムービーをQuicktimeプレーヤーのような別のアプリで再生して、この映画が壊れていないことを確認しましたか?

+0

ええ、私は持っています。私はiTunesでそれを演奏し、期待どおりに動作しました。 –

2

同じ問題を抱えた後、私はもう少し深く掘り下げて別の解決策を思いつきました。私の問題は少し違っていた。私は映画プレーヤーのミッドアプリを使用していたので、Cocos2Dが少し前に映画プレーヤーを使うというネイサンの提案は効果がありませんでした。

MPMoviePlayerControllerには、デフォルトでYESに設定されているuseApplicationAudioSessionというこの不可解なプロパティがあります。このプロパティを「いいえ」に設定すると、ムービープレーヤは、再生可能な再生カテゴリを持たないシステム提供のオーディオセッションを使用します。 (礼儀Apple docs)、それにもかかわらず、遅れの問題を修正します。

私はCocosDenshionをオーディオに依存しており、CocosDenshionで定義されて利用されているアプリケーションのオーディオセッションは、ムービープレーヤに必要なオーディオセッションと互換性がありません。これは全体の推測ですが、それは何が起こっているかに関する理論かもしれません。

いずれにしても、システムが提供するオーディオセッションを使用すると、ビデオ再生が突然同期します。

関連する問題