如何同时播放多个音频文件

时间:2015-02-03 13:04:41

标签: ios multimedia

如何使用AVAudioPlayer同时播放音频文件的数量? 是否可以使用AVAudioPlayer同时播放多个音频文件? 或任何其他方式同时播放多个音频文件? 谢谢!

2 个答案:

答案 0 :(得分:8)

以下格式的文件可以在iPhone上同时播放。

AAC,MP3和ALAC(Apple Lossless)音频:有CPU资源问题。 线性PCM和IMA / ADPCM(IMA4音频):没有CPU资源问题。

您只需要为每个要播放的音乐文件创建一个新的播放器实例。

示例代码段:

-(void)playSounds{
    [self playSound1];
    [self playSound2];
}

-(void)playSound1{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"file1" 
                                                      ofType:@"m4a"];  
    AVAudioPlayer* player= [[AVAudioPlayer alloc] initWithContentsOfURL:
                                                 [NSURL fileURLWithPath:path]
                                                                  error:NULL];  
    player.delegate = self;  
    [player play];
}

-(void)playSound2{
     SString *path = [[NSBundle mainBundle] pathForResource:@"file2" 
                                                      ofType:@"m4a"];  
    AVAudioPlayer* player= [[AVAudioPlayer alloc] initWithContentsOfURL:
                                                 [NSURL fileURLWithPath:path]
                                                                  error:NULL];  
    player.delegate = self;  
    [player play];
}

转换为支持的格式(即mp3到caf):

/ usr / bin / afconvert -f caff -d ima4 sound.mp3 sound.caf

详细教程:

https://brainwashinc.wordpress.com/2009/08/14/iphone-playing-2-sounds-at-once/

答案 1 :(得分:2)

Swift 2 + 解决方案

- >现在,您可以使用 mp3 m4a 后缀播放多个声音同时。但是,如果您想将 mp3转换为m4a ,可以从官方网站下载此免费程序: http://audacityteam.org/download/mac/

您也可能需要 FFmpeg 2 + 来转换过程: http://lame.buanzo.org/#lameosxdl

- >我更喜欢使用 m4a ,因为简而言之,它是Apple自己的音频格式。

//import AVFoundation

  // you have to define them first
  var player1 = AVAudioPlayer()
  var player2 = AVAudioPlayer()

  func playMultipleSound() {
    playSound1()
    playSound2()
  }

  func playSound1() {
    let soundUrl = NSBundle.mainBundle().URLForResource("sound1", withExtension: "mp3")! // or m4a

    do {
      try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
      try AVAudioSession.sharedInstance().setActive(true)

      player1 = try AVAudioPlayer(contentsOfURL: soundUrl)
      player1.numberOfLoops = 0
      player1.prepareToPlay()
      player1.play()
    } catch _ {
      return print("sound file not found")
    }
  }

  func playSound2() {
    let soundUrl = NSBundle.mainBundle().URLForResource("sound2", withExtension: "m4a")! // or mp3

    do {
      try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
      try AVAudioSession.sharedInstance().setActive(true)

      player2 = try AVAudioPlayer(contentsOfURL: soundUrl)
      player2.numberOfLoops = 0
      player2.prepareToPlay()
      player2.play()
    } catch _ {
      return print("sound file not found")
    }
  }
  

MPEG-4 Part 14文件的唯一官方文件扩展名为.mp4,   但是很多都有其他扩展,最常见的是.m4a和.m4p。 M4A   (仅音频)通常使用AAC编码(有损)进行压缩,但可以   也是Apple无损格式。