16

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

我最初采用的方法是创建多个播放器,但似乎是错误的。

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

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

非常感谢您的帮助。

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

我终于从 Apple Dev Team 的 TechSupport 那里得到了答复,当我决定使用几个 AVPlayer 时,我似乎走在了正确的轨道上。

4

4 回答 4

9

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

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

于 2011-08-21T17:33:53.607 回答
1

我从来没有在这里回答过一个问题,我不知道有人还在等待这个问题的答案,但这是我的看法……试试这个,它应该可以工作,我目前正在使用它来播放 12 个以上的同时音频样本。如果我在做一些新的事情,我很抱歉..

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

但首先你需要:

  1. 需要将 AVFoundation 导入到项目和#import 到 .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!");
}
于 2013-12-22T21:34:47.800 回答
0

好吧,我的解决方案来自经验。如果需要,我可以快速完成一个项目。而且,它需要在斯坦福大学使用MoMu API 。它涉及创建用于读取文件的 WvIn 和 WvOut 对象。只需将这些对象的音频样本馈送到输出缓冲区即可同时播放文件。虽然 API 使用了 AVFoundation,但在这个项目中并没有明确使用 AVFoundation。

于 2012-07-25T19:20:05.007 回答
0

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

你还必须做的是保持对所有玩家对象的强烈参考。

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

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

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

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

于 2020-12-06T18:12:36.187 回答