2010-08-16 3 views
4

с использованием некоторых из новых API-интерфейсов в iOS4 я пытаюсь захватить входные данные с камеры и микрофона iPhone и сохранить его в файле. ниже - код, который я использую.ошибка при захвате камеры и аудиовхода

AVCaptureSession* captureSession = [[AVCaptureSession alloc] init]; 
AVCaptureDevice *audioCaptureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]; 
AVCaptureDeviceInput *audioInput = [AVCaptureDeviceInput deviceInputWithDevice:audioCaptureDevice error:&error]; 
AVCaptureDeviceInput* videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:captDevice error:&error]; 
AVCaptureMovieFileOutput * videoOutput = [[AVCaptureMovieFileOutput alloc] init]; 

if (videoInput && videoOutput && audioInput) 
{ 
    [captureSession addInput:audioInput]; 
    [captureSession addInput:videoInput]; 
    [captureSession addOutput:videoOutput]; 
    if([captDevice lockForConfiguration:&error]) 
    { 
     if ([captDevice hasTorch]) 
      captDevice.torchMode = AVCaptureTorchModeOn; 

     [captDevice unlockForConfiguration]; 
    } 
    else 
    { 
     NSLog(@"Could not lock device for config error: %@", error); 
    } 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSURL* saveLocationURL = [[NSURL alloc] initFileURLWithPath:[NSString stringWithFormat:@"%@/movie.mov", documentsDirectory]]; 

    [videoOutput startRecordingToOutputFileURL:saveLocationURL recordingDelegate:self]; 
    [captureSession startRunning]; 

    [saveLocationURL release]; 
} 
else 
{ 
    NSLog(@"Video Error: %@", error); 
} 

когда didFinishRecordingToOutputFileAtURL возвращается я получаю загадочную реакцию на ошибку.

Error Domain=AVFoundationErrorDomain Code=-11803 "Cannot Record" UserInfo=0x152f70 {NSLocalizedRecoverySuggestion=Try recording again., AVErrorRecordingSuccessfullyFinishedKey=false, NSLocalizedDescription=Cannot Record} 

код ошибки -11803 означает "AVErrorSessionNotRunning". все, что я могу сказать, это сказать мне что-то, чего я не знаю. кто-нибудь знает, почему сеанс не запущен?

ответ

15

Звоните [captureSession startRunning]; до [videoOutput startRecordingToOutputFileURL:saveLocationURL recordingDelegate:self];.

+1

, который исправил проблему, но теперь я получаю новую ошибку. Ошибка домена = NSOSStatusErrorDomain Code = -12673 «Операция не может быть выполнена. (Ошибка OSStatus -12673.)« UserInfo = 0x154190 {AVErrorRecordingSuccessfullyFinishedKey = false} – iHorse

+0

Существует ли movie.mov уже? См. Также «stringByAppendingPathComponent:». –

+0

Нет, этот файл не существует. не так ли? – iHorse