Ошибка записи в файл фильма с AVFoundation - PullRequest
2 голосов
/ 24 сентября 2011

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

Ошибка домена = 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 *) * 10 * * * 10 * 211023 *

    Что действительно странно, так это то, что это иногда работает случайным образом.Мол, я скомпилирую проект, и он будет работать 100% времени.В следующий раз, когда я скомпилирую, будет работать 0%.Что я могу делать не так?Что-нибудь очевидное?

Ответы [ 2 ]

6 голосов
/ 16 сентября 2012

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

0 голосов
/ 30 сентября 2011

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

...