使用AVPlayer播放多个音频文件

时间:2011-05-31 21:35:17

标签: xcode ipad avfoundation avplayer

我正在尝试同时播放多个声音。

我最初采取的方法是创建几个玩家,但这似乎是错误的。

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

是通过制作它们的AVAssets,但在这种情况下,我将如何随时停下来播放它们。

非常感谢您的帮助。

我需要AVPlayer的原因是从iPod库中获取声音。

我终于得到了Apple Dev Team的技术支持部门的答复,当我决定使用多个AVPlayer时,我似乎正走在正确的轨道上。

4 个答案:

答案 0 :(得分:9)

对于您想要制作的每个声音,制作一个新的AVPlayer。

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

答案 1 :(得分:1)

我从来没有在这里回答过一个问题我不知道还有人还在等待这个问题的答案,但是我接受了......尝试这个它应该有效,我现在用它来玩12加同时音频样本。如果我正在做一些新鲜事,我道歉..

您按一个按钮,然后运行此代码......

但首先你需要:

  1. 需要将AVFoundation导入到project和#import到.h文件中,然后我们就可以用它来播放声音了。
  2. 需要放“AVAudioPlayer * myAudio;”当然没有引号在某处(通常在viewDidLoad之上)。
  3. 然后只是......

    -(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!");
    }
    

答案 2 :(得分:0)

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

答案 3 :(得分:0)

基本上每个人都在说什么,请确保为每个源创建一个音频播放器。

您还必须做的是严格参考所有播放器对象。

如果不这样做,它们将被释放并且播放停止。

当我仅保留对我想回放的上一个源的引用时,我遇到了这个问题。这意味着我只会听到最后一个数据源,并且我认为问题与同步播放配置有关-但实际上,只是其他播放器被取消分配,因此播放将停止。

 try? AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback, options: .mixWithOthers)
            try? AVAudioSession.sharedInstance().setActive(true)

在创建和播放音频源之前,我还使用了上面的代码段。