我正在尝试将电影添加到游戏的介绍中。电影没有声音/音乐。但是,我确实在后台循环播放音乐。音乐有点特别,因为音乐的前奏与电影一样长,然后节奏加快了一点。
我遇到的问题是,在某些设备(如 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 秒左右开始播放,这最终会导致介绍中断。如何确保电影和音乐同步播放?
我不能做的事情,除非另有确信:
- 我无法将音乐放在视频中,因为音乐会循环显示几个 View 。
- 我无法将电影制作成 UIImageView 动画。
最佳答案
如果有人遇到这个问题,我会采取以下措施。
我为 MPMoviePlayerLoadStateDidChangeNotification
创建了通知
当调用选择器返回 MPMovieLoadStatePlaythroughOK
的通知时,我播放了电影和音轨。
希望这对您有所帮助。
关于iphone - 与 AVAudioPlayer 同步播放 MPMoviePlayerController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9138441/