2014-12-26 3 views
1

Я создал AVCaptureSession и уровень предварительного просмотра, но как начать запись видео?Начать запись видео с помощью AVCaptureSession

Это мой код ..

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]; 

AVCaptureVideoDataOutput *videoOutput = [[AVCaptureVideoDataOutput alloc] init]; 
    videoOutput.videoSettings = nil; 
    [session addOutput:videoOutput]; 
    [session startRunning]; 

Теперь я хочу, чтобы начать запись, когда я нажимаю кнопку, и после того, как я закончу запись, он сохраняет видео рулон камеры, так как сделать это?

Спасибо.

+0

вызов 'startRecordingToOutputFileURL:'. Для этого Apple имеет отличный примерный код. – matt

ответ

1

Если вы хотите записать можно использовать для файла, который вы можете использовать AVCaptureMovieFileOutput, добавить в свой AVCaptureSession как так

AVCaptureMovieFileOutput *movieFileOutput = [[AVCaptureMovieFileOutput alloc] init]; 

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

Затем используйте AVCaptureMovileFileOutput метод startRecordingToOutputFileURL, чтобы начать запись в какой-то URL ..

Надежда, что помогает

Daniel

+0

Это не сработало :(я должен переопределить метод делегата или он не является обязательным? Он сбой приложения, когда я вызываю startRecordingToOutputFileURL: recordDelegate: метод – V9Zeros

+0

приводит к сбою приложения, говорящего что? – Daniel

+0

Я не использую xcode, поэтому я не могу см. журнал. Но каковы возможные причины этого? Должен ли я удалить AVCaptureVideoDataOutput или оставить его там? – V9Zeros

0

на нажатие кнопки, инициализировать AVCaptureMovieFileOutput затем вызвать startRecordingToOutputFileURL путем предоставления outputFilePath

AVCaptureMovieFileOutput *movieFileOutput; 

// Initialization 
// Start recording with Path 
[movieFileOutput startRecordingToOutputFileURL:[NSURL fileURLWithPath:outputFilePath] recordingDelegate:self]; 


// Override the callback method 
(void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error 
{ 

    // Use ALAssetsLibrary to save recorded video to Photo Album 
    [[[ALAssetsLibrary alloc] init] writeVideoAtPathToSavedPhotosAlbum:outputFileURL completionBlock:^(NSURL *assetURL, NSError *error) { 

    }]; 
} 
Смежные вопросы