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

joh*_*hnm 2 video-capture avfoundation ios4 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];
Run Code Online (Sandbox Code Playgroud)

}

然后我从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];
Run Code Online (Sandbox Code Playgroud)

}

这时我在这个函数中得到了错误.

  • (void)captureOutput:(AVCaptureFileOutput*)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL*)outputFileURL fromConnections:(NSArray*)connections error:(NSError*)error

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

Eth*_*han 6

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

  • 你是对的.我也遇到了这个问题.你能告诉我你如何翻译方向吗?我不知道如何改变它.它是只读的.谢谢~~ (3认同)