iOSでアプリを開発しています。カメラからビデオをキャプチャする必要があり、そのビデオをファイルに記録し、非圧縮フレームも取得する必要があるため、両方の AVCaptureOutput を使用する必要があります...
アップルのドキュメントでこれを読みました「単一のセッションで調整された複数の入力と出力を構成できます:」だから、それは実行可能に違いないと思いますが、問題があります...
私は両方をセッションに設定しています:
self.fileOutput.maxRecordedDuration = CMTimeMake(5000,1 );;
self.fileOutput.minFreeDiskSpaceLimit = 3000;
if([self.captureSession canAddOutput:self.fileOutput]){
[self.captureSession addOutput:self.fileOutput];
NSLog(@"Added File Video Output");
}else{
NSLog(@"Couldn't add video output");
}
if ([self.captureSession canAddOutput:videoOutput]){
[self.captureSession addOutput:videoOutput];
NSLog(@"Added Data Video Output");
}else{
NSLog(@"Couldn't add video output");
}
両方の「肯定的な」確認メッセージが表示されます。その後、私は次のように電話しています:
NSString *assetPath = [self createAssetFilePath:@"mov"];
NSURL *outputURL = [[NSURL alloc] initFileURLWithPath:assetPath];
[self.fileOutput startRecordingToOutputFileURL:outputURL recordingDelegate:self];
[self.captureSession startRunning];
そして、私はデリゲート関数を持っています:
- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error {
NSLog(@"Output File URL: %@ ", outputFileURL);
BOOL recordedSuccessfully = YES;
if ([error code] != noErr) {
NSLog(@"Error: %@", error);
id value = [[error userInfo] objectForKey:AVErrorRecordingSuccessfullyFinishedKey];
NSLog(@"Error: %@", value);
if (value) {
recordedSuccessfully = [value boolValue];
}
}
}
エラーは発生しませんが、「AVCaptureVideoDataOutput」は「AVCaptureMovieFileOutput」を追加する前に機能していましたが、現在は機能していません...
では、両方できるのでしょうか?! 何か案が?!
ありがとう!