2010-08-16 17 views
4

en utilisant certaines des API nouvelles astucieuses dans iOS4 J'essaie de capturer l'entrée de l'appareil photo de l'iPhone et le microphone et l'enregistrer dans un fichier. ci-dessous est le code que j'utilise.erreur lors de la capture de la caméra et l'entrée audio

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); 
} 

lorsque le didFinishRecordingToOutputFileAtURL revient i obtenir une réponse d'erreur cryptique.

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

le code d'erreur -11803 signifie "AVErrorSessionNotRunning". Tout ce que je peux dire c'est me dire quelque chose que je ne sais pas. Quelqu'un at-il une idée de pourquoi la session ne fonctionne pas?

Répondre

15

Appelez [captureSession startRunning]; avant [videoOutput startRecordingToOutputFileURL:saveLocationURL recordingDelegate:self];.

+1

qui a corrigé le problème signalé mais maintenant je reçois une nouvelle erreur. Erreur Domaine = NSOSStatusErrorDomain Code = -12673 "L'opération n'a pas pu aboutir. (Erreur OSStatus -12673.)" UserInfo = 0x154190 {AVErrorRecordingSuccessfullyFinishedKey = false} – iHorse

+0

Est-ce que movie.mov existe déjà? Voir aussi "stringByAppendingPathComponent:". –

+0

non ce fichier n'existe pas. devrait-il? – iHorse