I am trying to record and play video at the same time. Is this possible with avfoundation? Currently, I can do this until I record audio. As soon as I add the audio input to AVCaptureSession and reload everything that I get "AVCaptureSessionWasInterruptedNotification" and the recording stops.
This is how I play the video.
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:path]]; [moviePlayer.view setFrame:self.playerView.bounds]; moviePlayer.useApplicationAudioSession=NO; self.player = moviePlayer; [moviePlayer release]; [self.playerView addSubview:player.view]; [player play];
And this is how I record the video:
NSError *error; AVCamCaptureManager *captureManager = [[AVCamCaptureManager alloc] init]; if ([captureManager setupSessionWithPreset:AVCaptureSessionPresetLow error:&error]) { [self setCaptureManager:captureManager]; AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:[captureManager session]]; self.captureVideoPreviewLayer= previewLayer; UIView *view = [self cameraView]; CALayer *viewLayer = [view layer]; [viewLayer setMasksToBounds:YES]; CGRect bounds = [view bounds]; [captureVideoPreviewLayer setFrame:bounds]; if ([captureVideoPreviewLayer isOrientationSupported]) [captureVideoPreviewLayer setOrientation:AVCaptureVideoOrientationPortrait]; [captureVideoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill]; [[captureManager session] startRunning]; [self setCaptureVideoPreviewLayer:captureVideoPreviewLayer]; if ([[captureManager session] isRunning]) { [captureManager setOrientation:AVCaptureVideoOrientationPortrait]; [captureManager setDelegate:self]; [viewLayer insertSublayer:captureVideoPreviewLayer below:[[viewLayer sublayers] objectAtIndex:0]]; NSString *countString = [[NSString alloc] initWithFormat:@"%d", [[AVCaptureDevice devices] count]]; NSLog(@"Device count: %@",countString); } else { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Failure" message:@"Failed to start session." delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil]; [alertView show]; [alertView release]; } } else { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Input Device Init Failed" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil]; [alertView show]; [alertView release]; } [captureManager release]; if (![[self captureManager] isRecording]) { [[self captureManager] startRecording]; }
Where I use the "AVCamCaptureManager" from the Apple AVCam sample code.
source share