2

これは奇妙な問題です。プロジェクトでこれに関連するコードを変更していませんが、ビデオ録画がランダムに機能しなくなりました。ムービーをファイルに保存しようとすると、次のエラーが発生します。

エラー 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%動作します。私は何が間違っているのでしょうか?明らかなことはありますか?

4

2 に答える 2

6

デバイスの向きが UIDeviceOrientationFaceUp、UIDeviceOrientationFaceDown、UIDeviceOrientationUnknown のときに -12780 を取得しました。再コード化されたビデオの向きは縦または横でなければならないため、エラーが発生します。これら 3 つをチェックし、ポートレートに変換する簡単なメソッドを作成する必要がありました。

于 2012-09-16T17:59:36.827 に答える
-3

これはアップルのバグのようです。AVAssetWriter と AVAssetWriterInput を使用して解決しました

于 2011-09-29T20:56:02.110 に答える