Ошибка записи в файл фильма с помощью AVFoundation

Это странная проблема. Я не менял код, связанный с этим, в своем проекте, но моя видеозапись случайно перестала работать. Когда я пытаюсь сохранить фильм в файл, я получаю следующую ошибку:

Error Domain=NSOSStatusErrorDomain Code=-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%. Что я могу делать неправильно? Что-нибудь очевидное?


person johnm    schedule 23.09.2011    source источник


Ответы (2)


Я получил -12780, когда ориентация устройства была UIDeviceOrientationFaceUp, UIDeviceOrientationFaceDown и UIDeviceOrientationUnknown. Так как ориентация перекодированного видео должна быть книжной или альбомной, у вас будет ошибка. Мне пришлось написать быстрый метод, который проверяет эти три и просто переводит их в портрет.

person Ethan    schedule 16.09.2012
comment
Вы правы. Я тоже сталкиваюсь с этой проблемой. Не могли бы вы рассказать мне, как вы переводите ориентацию?? Я не знаю, как ее изменить. Она доступна только для чтения. Спасибо~~ - person Steven Jiang; 03.12.2012

это, кажется, ошибка с яблоком. я решил это с помощью AVAssetWriter и AVAssetWriterInput

person johnm    schedule 29.09.2011
comment
Можете ли вы предоставить более подробную информацию о том, как вы решили это? Спасибо! - person Pedro Mancheno; 12.04.2012