Play multiple Audio Files with AVPlayer

前端 未结 4 1475
深忆病人
深忆病人 2020-12-17 15:23

I\'m trying to play multiple sounds at the same time.

The approach initially I\'ve taken was to create several players , but it seems wrong one.

What\'s the

相关标签:
4条回答
  • 2020-12-17 15:29

    For every sound you want to make make a new AVPlayer.

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

    0 讨论(0)
  • 2020-12-17 15:35

    I have never answered a question here and I don't know in anyone is still waiting for an answer to this but heres my take... Try this and it should work, I am currently using it to play 12 plus simultaneous audio samples. I apologize if I am doing something newbish..

    You press a button and you run this code...

    But first you need to:

    1. Need to import AVFoundation to project and #import into .h file as well then we can play sound with this.
    2. Need to put "AVAudioPlayer *myAudio;" without quotation marks of course somewhere on top (usually on top of viewDidLoad).

    Then just...

    -(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!");
    }
    
    0 讨论(0)
  • 2020-12-17 15:40

    Basically what everyone else is saying, make sure you create an audio player for each source.

    What you also must do is KEEP A STRONG REFERENCE TO ALL THE PLAYER OBJECTS.

    If you don't do this they get released and playback stops.

    I had this issue when I was only keeping a reference to the last source I wanted to play back. This meant that I would only hear the last data source and I thought the issue was something to do with the simultaneous playback configuration - but in reality it was just the other players were being dealloc'd and thus playback would stop.

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

    I also used the above snippet before creating and playing back my audio sources.

    0 讨论(0)
  • 2020-12-17 15:41

    Well, my solution comes out of experience. I can quickly cook up a project if needed. But also, it requires the use of an MoMu API at Stanford. It involves creating WvIn and WvOut objects for reading the files. The audio samples of these objects simply need to be fed to the output buffer to play the files simultaneously. Although the API uses AVFoundation, there is no explicit use of AVFoundation in this project.

    0 讨论(0)
提交回复
热议问题