使用AVFoundation录制到电影文件时出错

时间:2011-09-23 21:33:49

标签: ios4 avfoundation video-capture avcapturesession

这是一个奇怪的问题。我没有更改任何涉及此项目的代码,但我的视频录制已经随机停止工作。当我尝试将电影保存到文件时,我收到以下错误:

错误域= NSOSStatusErrorDomain代码= -12780“操作无法完成。(OSStatus错误-12780。)”

我使用以下代码开始捕获:

- (void)initVideoCapture {
self.captureSession = [[AVCaptureSession alloc] init];

AVCaptureDevice *videoCaptureDevice = [self frontFacingCameraIfAvailable];
AVCaptureDeviceInput *videoInput = [AVCaptureDeviceInput deviceInputWithDevice:videoCaptureDevice error:nil];
[self.captureSession addInput:videoInput];

aMovieFileOutput = [[AVCaptureMovieFileOutput alloc] init];    
[self.captureSession addOutput:aMovieFileOutput];
[self detectVideoOrientation:aMovieFileOutput];

[self.captureSession setSessionPreset:AVCaptureSessionPresetMedium];

[self.captureSession startRunning];

}

然后我从viewController调用此方法开始录制:

- (void) startRecord {
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"yyyyMMddHHmmss"];
NSString *newDateString = [outputFormatter stringFromDate:[NSDate date]];
[outputFormatter release];

NSString * fileString = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mov",newDateString]];
recordFileURL = [[NSURL alloc] initFileURLWithPath:fileString];        

[aMovieFileOutput startRecordingToOutputFileURL:recordFileURL recordingDelegate:self];

}

此时我在此功能中收到错误。

  
      
  • (void)captureOutput:(AVCaptureFileOutput *)captureOutput   didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL   fromConnections:(NSArray *)连接错误:(NSError *)错误
  •   

真正奇怪的是,它有时会随机起作用。就像,我将编译项目,它将100%的时间工作。下次我编译它将工作0%。我能做错什么?有什么明显的吗?

2 个答案:

答案 0 :(得分:6)

当设备的方向是UIDeviceOrientationFaceUp,UIDeviceOrientationFaceDown和UIDeviceOrientationUnknown时,我得到-12780。由于重新编码的视频的方向必须是纵向或横向,因此它会出错。我必须编写一个快速方法来检查这三个,然后将它们翻译成肖像。

答案 1 :(得分:-3)

这似乎是苹果的一个错误。我通过使用AVAssetWriter和AVAssetWriterInput

解决了这个问题