Xcode 使用AVPlayer播放多个音频文件

Xcode 使用AVPlayer播放多个音频文件,xcode,ipad,avfoundation,avplayer,Xcode,Ipad,Avfoundation,Avplayer,我试图同时播放多个声音 我最初采用的方法是创建几个玩家,但这似乎是错误的 同时播放多个音频文件的最佳方式是什么 是通过让他们成为先锋,但在这种情况下,我怎么能停下来,随时随地玩他们呢 非常感谢你的帮助 我需要AVPlayer的原因是从iPod库中获取声音 我终于从苹果开发团队的技术支持部门得到了一个答案,当我决定使用几个AVPlayer时,我似乎走上了正确的道路。对于你想要制作的每个声音,我都会制作一个新的AVPlayer NSURL*url=[NSURL URLWithString:pathT

我试图同时播放多个声音

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

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

是通过让他们成为先锋,但在这种情况下,我怎么能停下来,随时随地玩他们呢

非常感谢你的帮助

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


我终于从苹果开发团队的技术支持部门得到了一个答案,当我决定使用几个AVPlayer时,我似乎走上了正确的道路。

对于你想要制作的每个声音,我都会制作一个新的AVPlayer

NSURL*url=[NSURL URLWithString:pathToYourFile]

AVPlayer*audioPlayer=[[AVPlayer alloc]initWithURL:url];


[audioPlayer播放]

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

我在这里从来没有回答过一个问题,我也不知道还有谁在等待这个问题的答案,但这是我的看法。。。试试这个,它应该会工作,我目前正在使用它来播放12个以上的同步音频样本。如果我做了什么新鲜事,我向你道歉

你按下一个按钮,然后运行这个代码

但首先你需要:

  • 需要将AVFoundation导入到project中,并#导入到.h文件中,然后我们就可以用它播放声音了
  • 当然,需要将“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!");
    }
    

    基本上和其他人说的一样,确保为每个源创建一个音频播放器

    您还必须做的是保持对所有玩家对象的强引用

    如果你不这样做,他们会被释放,播放停止

    我有这个问题的时候,我只保留了一个参考的最后一个来源,我想播放。这意味着我只会听到最后一个数据源,我认为问题与同步播放配置有关——但实际上,这只是其他播放器被释放,因此播放将停止

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

    在创建和播放音频源之前,我也使用了上述片段。

    我非常确定,如果必须使用AvaudioLayers,多个AvaudioLayers是一种不错的选择。设置它们,同时触发它们。记住释放任何分配,你应该没事。请记住,与openAL相比,AVAudio有点慢。我面临的两名球员的问题是。一旦我在第一个播放器打开的情况下开始播放第二个播放器,第一个播放器会停止几秒钟,然后他们继续播放。我还没有尝试用iphone库实现openAL,但有一个优秀的免费openAL声音管理器,它已经设置并优化。看看是否有帮助:Rouslan,你有没有关于如何解决这个问题的更新?嗨,David,一天结束时应该有多个AVPlayer,停止的问题是文件的实际比特率,如果它们不同于有问题的话,如果不是所有的东西都能很好地播放的话。换句话说,文件的比特率应该是相同的。@David Morton,正如最初的帖子在他自己问题的底部所描述的,正如这个答案所暗示的,你应该为每个声音使用不同的AVPlayer。如果你不需要声音流,并且可以在沙盒中使用声音,你可以使用多个AVAudioPlayer实例,这就是我的应用程序所做的。我确实使用多个实例。故障仍然存在。@john.k.doe你能帮我解决吗?我按照你的建议使用了多个播放器,但声音仍然会被打断。你能帮我一下吗?如果您按两次按钮,新的音频播放器将启动,您将丢失已播放的最后一个音频播放器。