2011-05-31 238 views
16

我试图在同一时间播放多个声音。用AVPlayer播放多个音频文件

这种方法最初我已经采取了创建多个播放器,但它似乎是错误的。

什么是同时播放多个音频文件的最好方法。

它是通过使他们AVAssets,但在这种情况下,我怎么会停下来和他们玩,每当我想要的。

非常感谢您的帮助。

我之所以需要AVPlayer是从iPod库获取的声音。

我终于从Apple Dev Team的TechSupport得到了答案,当我决定使用多个AVPlayer时,似乎我走上了正轨。

+0

我敢肯定,多AVAudioPlayers是,如果你必须使用AVAudioPlayers的路要走。只需设置它们并同时触发它们。请记住释放任何分配,你应该没问题。请记住,AVAudio与openAL相比有点慢。 – 2011-06-01 03:43:39

+0

我面对的2名球员的问题在于。一旦我开始玩第二个玩家的时候,第一个玩家会停下来玩一秒,然后继续玩。 – 2011-06-01 08:57:00

+0

我还没有尝试过使用iphone库实现openAL,但有一个优秀的免费openAL声音管理器已经设置和优化。看看它是否有所帮助:http://www.71squared.com/2011/01/latest-sound-manager/ – 2011-06-01 14:50:12

回答

9

对于每一个声音,你想使作出新的AVPlayer。

NSURL *url = [NSURL URLWithString:pathToYourFile];
AVPlayer *audioPlayer = [[AVPlayer alloc] initWithURL:url];
[audioPlayer play];

+0

@大卫莫顿,作为他自己的问题底部描述的原始帖子,并作为此答案表明,你会为每个声音使用不同的AVPlayer。如果您不需要流式传输声音并可以在沙箱中使用声音,则可以使用多个AVAudioPlayer实例,这是我的应用程序所做的。 – 2012-07-18 23:18:59

+0

我确实使用了多个实例。故障仍然存在。 – 2012-07-19 22:53:49

0

嗯,我的解决方案出来的经验。如果需要,我可以快速制作一个项目。而且,它还需要在斯坦福大学使用MoMu API。它涉及到创建WvIn和WvOut对象来读取文件。这些对象的音频样本只需输入到输出缓冲区即可同时播放这些文件。尽管API使用AVFoundation,但在此项目中没有明确使用AVFoundation。

1

我从来没有在这里回答的问题,我不知道的人仍然在等待一个答案,但是我的继承人采取...试试这个,它应该工作,我目前使用它来播放12个加同时音频样本。我很抱歉,如果我做的事情newbish ..

你按下一个按钮,并运行此代码...

但首先,你需要:

  1. 需要进口AVFoundation项目和#导入到.h文件中,然后我们可以用此播放声音。
  2. 需要放入“AVAudioPlayer * myAudio;”当然不需要引号(通常在viewDidLoad之上)。

然后就...

-(IBAction)playButtonPressed:(id)sender { 

    NSURL *yourMusicFile; 
    yourMusicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"your_Song_Name" ofType:@"mp3"]]; 

    myAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil]; 
    [myAudio play]; 
    NSLog(@"Button -playButtonPressed- has been pressed!"); 
}