Korzystanie razem z AVCaptureSession i AVAudioPlayer

Mogę poprawnie nagrywać wideo i odtwarzać film do pliku poprawnie. Mam jednak problem z nagrywaniem wideo (brak wyjścia wideo) podczas próby użycia AVAudioPlayer do odtwarzania niektórych plików audio. Czy to oznacza, że ​​nie mogę jednocześnie korzystać z AVCaptureSession i AVAudioPlayer? Oto mój kod do tworzenia sesji przechwytywania i odtwarzania dźwięku. Najpierw rozpoczyna się przechwytywanie wideo, a następnie podczas przechwytywania chcę odtworzyć jakiś dźwięk. Dziękuję bardzo za każdą pomoc.

Kod, aby utworzyć sesję przechwytywania w celu nagrywania wideo (z dźwiękiem) - wyjście do pliku .mov:

- (void)addVideoInput
    AVCaptureDevice *audioDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
    //... also some code for setting up videoDevice/frontCamera
    NSError *error;
    AVCaptureDeviceInput *videoIn = [AVCaptureDeviceInput 
    deviceInputWithDevice:frontCamera error:&error];
    AVCaptureDeviceInput *audioIn = [AVCaptureDeviceInput 
    deviceInputWithDevice:audioDevice error:&error];
    if (!error) {
         if ([captureSession canAddInput:audioIn])
              [captureSession addInput:audioIn];
         else
              NSLog(@"Couldn't add audio input.");  
         if ([captureSession canAddInput:videoIn])
              [captureSession addInput:videoIn];
         else
              NSLog(@"Couldn't add video input.");
}
- (void)addVideoOutput
{
     AVCaptureMovieFileOutput *m_captureFileOutput = [[AVCaptureMovieFileOutput alloc] init];
     [captureSession addOutput:m_captureFileOutput];

     [captureSession startRunning];

     NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
     NSMutableString *filePath = [NSMutableString stringWithString:@"Movie.mov"];
     NSString* fileRoot = [docDir stringByAppendingPathComponent:filePath];
     NSURL *fileURL = [NSURL fileURLWithPath:fileRoot];

     AVCaptureConnection *videoConnection = NULL;

     for ( AVCaptureConnection *connection in [m_captureFileOutput connections] ) 
     {
         for ( AVCaptureInputPort *port in [connection inputPorts] ) 
         {
             if ( [[port mediaType] isEqual:AVMediaTypeVideo] ) 
             {
                 videoConnection = connection;

             }
         }
     }

     [videoConnection setVideoOrientation:AVCaptureVideoOrientationLandscapeRight]; 


     [m_captureFileOutput startRecordingToOutputFileURL:fileURL recordingDelegate:self];
     [m_captureFileOutput release];
}

Kod do odtwarzania dźwięku, ta funkcja jest wywoływana podczas sesji przechwytywania wideo. Jeśli nie zadzwonię do tej funkcji, wideo zostanie nagrane i będę mógł zapisać w pliku .mov. Jeśli jednak wywołam tę funkcję, nie ma wyjściowego pliku .mov.

- (void)playAudio
{
     NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"AudioFile" ofType:@"mp3"];
     NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:soundFilePath];
     AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
     [fileURL release];
     self.audioPlayer = newPlayer;
     [newPlayer release];
     [audioPlayer setDelegate:self];
     [audioPlayer prepareToPlay];
     [audioPlayer play];
}

questionAnswers(1)

yourAnswerToTheQuestion