4

ゲームの紹介にムービーを追加しようとしています。映画には音/音楽がありません。しかし、私はバックグラウンドで音楽をループさせています。音楽のイントロは映画と同じ長さで、その後テンポが少し速くなるという点で、音楽はいくらか特定です。MPMoviePlayerControllerをAVAudioPlayerと同時に再生する

iPod 4Gのようないくつかのデバイスで私が抱えている問題は、音楽を再生するのが早すぎるため、基本的にムービーのシーケンスが壊れてしまいます。これは私のiPhone 4Sでは起こりません。

私は、映画がいつ再生を開始したのかを知らせて、音楽を開始しようとしました。私は失敗しました。

は、ここで私はこれまで得たものです:まとめで

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"SplashVideo" ofType:@"mp4"]]]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:player]; 

    [[player view] setFrame:CGRectMake(0, 0, 480, 320)]; 
    [player setControlStyle:MPMovieControlStyleNone]; 
    [[self view] addSubview:[player view]]; 

    // play movie 
    [player play]; 

    //musicPlayer is defined in the header 
    [self setMusicPlayer:[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"SplashMusic" ofType:@"m4a"]] error:nil]]; 
    [[self musicPlayer] setNumberOfLoops:loop]; 
    [[self musicPlayer] prepareToPlay]; 
    [[self musicPlayer] setDelegate:self]; 
} 

- (void)moviePlayerPlaybackDidFinish:(NSNotification*) aNotification { 
    DLog(@"**********"); 

    MPMoviePlayerController *player = [aNotification object]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:player]; 

    [player stop]; 
    [[player view] removeFromSuperview]; 

    [player autorelease]; 
}

、iPhone 4Sにそれは完璧に果たしているが、映画が行う前に、iPodの4Gに、音楽が約2秒を開始し、これが終了しますイントロを放つ。映画と音楽が同期して再生されるようにするにはどうすればよいですか?私はそう確信していない限り、行うことはできません

もの:音楽が少数意見をループするために意味されるよう

  1. は、私はビデオに音楽を入れることはできません。
  2. ムービーをUIImageViewアニメーションに作成できません。
+0

MPMoviePlayerControllerの再生状態通知を使用して、オーディオの開始をビデオと同期させます。 – Till

+0

@Till - ありがとう、私はこれを試しても、同じ問題が発生します。 「@セレクタ」を呼び出して約1秒後に音楽を延期すると、iPodはうまくいくが、iPhoneでは曲が遅れている。 – RoLYroLLs

+1

それでは、私が言ったように、MPMoviePlayerControllerの再生状態 "playThroughOK"を待って、その時点でビデオを一時停止してください。その後、AVAudioPlayerが再生を開始するのを待ちます(currentTimeでKVOを使用)。そして、ビデオの再生を一時停止します。 – Till

答えて

2

これは、誰かがこの問題に遭遇した場合に行ったことです。

私はのための通知を作成:セレクタが、私は映画やサウンドトラックを果たしたMPMovieLoadStatePlaythroughOKの通知を返すと呼ばれていた場合にはMPMoviePlayerLoadStateDidChangeNotification

これが役に立ちます。

関連する問題