与AVAudioPlayer同步播放MPMoviePlayerController

我正在尝试添加一个电影到游戏的介绍。 这部电影没有声音/音乐。 不过,我确实在背景中有音乐循环。 音乐是有点特定的,因为音乐的介绍和电影一样长,然后节奏快一点。

在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. 我不能把音乐放在video上,因为音乐是为了循环观看一些video。
  2. 我无法将电影创build为UIImageViewanimation。

这是我遇到的情况,

我创build了通知: MPMoviePlayerLoadStateDidChangeNotification

当select器被调用返回MPMovieLoadStatePlaythroughOK的通知时,我播放了电影和音轨。

希望这可以帮助。