2014-12-29 1 views
0

Я создал сеанс, устройство, вход и выход, но когда я называю startRecordingToOutputFileURL: recordingDelegate: метода, он называет didFinishRecordingToOutputFileAtURL метода делегата, поэтому он заканчивает без запуска!Запись видео с AVFoundation

Это мой код ..

-(void)viewWillAppear:(BOOL)animated { 
[super viewWillAppear:animated]; 

AVCaptureSession *session = [[AVCaptureSession alloc] init]; 
[session setSessionPreset:AVCaptureSessionPresetPhoto]; 

AVCaptureDevice *inputDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 


AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:inputDevice error:&error]; 

if ([session canAddInput:deviceInput]) { 
[session addInput:deviceInput]; 
} 

AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session]; 

[previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill]; 
CALayer *rootLayer = [[self view] layer]; 
[rootLayer setMasksToBounds:YES]; 
CGRect frame = self.view.frame; 

[previewLayer setFrame:frame]; 

[rootLayer insertSublayer:previewLayer atIndex:0]; 

_movieFileOutput = [[AVCaptureMovieFileOutput alloc] init]; 

if ([session canAddOutput:movieFileOutput]) { 
    [session addOutput:movieFileOutput]; 
} 

[session startRunning]; 
} 
-(void)buttonClicked { 
[_movieFileOutput startRecordingToOutputFileURL:url recordingDelegate:self]; 
} 

- (void)captureOutput:(AVCaptureFileOutput *)captureOutput 
didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL 
     fromConnections:(NSArray *)connections 
      error:(NSError *)error { 
    //This method is getting called when I press the button 
    NSLog(@"Finished Recording"); 

} 

Так что случилось с моим кодом? Я пропустил что-нибудь?

Thanks

+0

AVCaptureSessionPresetPhoto – Andy

ответ

1

И, наконец, это сработало!

Проблема была в URL. Я пробовал много URL-адресов, а не из них работал, он должен быть в NSDocumentsDirectory, вот и все!

 Смежные вопросы

  • Нет связанных вопросов^_^