2011-07-15 275 views
1

我正在构建一个游戏应用程序,我需要播放动画视频及其相应的声音(根据情况可能会有所不同)。我已经准备好所有的视频和声音文件,但我无法同时播放它们。我正在使用MPMoviePlayer用于视频和AVFoundation框架来播放音频。无论如何都可以同时运行这两者吗?iPhone:同时播放音频和视频

对于视频:

 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

取决于您如何使用AVFoundation。想发布一些代码? –

+0

请参阅编辑的问题。谢谢! – applefreak

回答

1

我个人会去AVPlayer路线。我知道你可能想要使用MPMoviePlayerViewController和AVAudioPlayer,但是如果你只是多花一点时间与AVPlayer组合使用AVMutableComposition,就可以做所有你想做的事以及更多。这是非常值得的投资。

总之,您将设置AVMutableComposition(也被视为“资产”),并带有轨道。这些曲目对应于音频和视频曲目。音轨可以从其他文件的全部或部分中拉出,或者您也可以根据需要插入空的音频/视频轨道部分。您将在视频轨道上放置视频,并在单独的音轨上放置任意数量的音频文件。然后使用AVMutableComposition创建一个AVPlayer对象并调用“播放”消息。它非常精确地为你做了所有的同步。

This post实际上有一些很好的示例代码,但我不确定他是否能够正常工作。

+0

非常感谢。我认为这是一个好主意! – applefreak

0

您可以尝试使用AVMutableVideoComposition。试试看this thing,如果你需要任何帮助,请告诉我。我很乐意帮忙。