2011-05-31 236 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!"); 
}