2

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」を追加する前に機能していましたが、現在は機能していません...

では、両方できるのでしょうか?! 何か案が?!

ありがとう!

4

1 に答える 1