我正在构建一个游戏应用程序,我需要播放动画视频及其相应的声音(根据情况可能会有所不同)。我已准备好所有视频和声音文件,但我无法同时播放它们。我正在使用MPMoviePlayer进行视频和AVFoundation框架来播放音频。无论如何都要同时运行这两个?
视频:
MPMoviePlayerViewController *videoController = [[[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:[cellDetails objectForKey:@"AVFile"]]] autorelease];
[self presentMoviePlayerViewControllerAnimated:videoController];
声音:
// Instantiates the AVAudioPlayer object, initializing it with the sound
AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: soundFileURL error: nil];
self.appSoundPlayer = newPlayer;
[newPlayer release];
[appSoundPlayer prepareToPlay];
appSoundPlayer.numberOfLoops = -1;
[appSoundPlayer setVolume: self.soundLevel];
[appSoundPlayer setDelegate: self];
[appSoundPlayer play];
感谢。
答案 0 :(得分:1)
我个人会去AVPlayer路线。我知道你可能想要使用MPMoviePlayerViewController和AVAudioPlayer,但是如果你只需要花费更多的时间在AVMlayer的AVMutableComposition上,你可以做你正在尝试的所有事情。这非常值得投资。
简而言之,您将使用曲目设置AVMutableComposition(也被视为“资产”)。这些轨道对应于音频和视频轨道。可以从其他文件的全部或部分中拉出曲目,也可以根据需要插入空的音频/视频曲目部分。您将在视频轨道上放置视频,并在单独的音轨上放置任意数量的音频文件。然后使用AVMutableComposition创建一个AVPlayer对象并调用“播放”消息。它非常精确地为您完成所有同步。
This post实际上有一些很好的示例代码,但我不确定他是否能正常使用它。
答案 1 :(得分:0)
您可以尝试使用AVMutableVideoComposition。试着看看this thing,如果您需要任何帮助,请告诉我。我很乐意帮忙。