次の出力設定で AVCaptureSession を使用しています。
NSString* key = (NSString*)kCVPixelBufferPixelFormatTypeKey;
NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange];
NSDictionary* videoSettings = [NSDictionary dictionaryWithObject:value forKey:key];
[captureOutput setVideoSettings:videoSettings];
私の AVCaptureVideoPreviewLayer は正常に表示されていますが、AVCaptureVideoPreviewLayer を使用してスクリーンショットを取得できなかったため、これ以上のものが必要です。したがって、captureOutput デリゲート内で CGContextRef を作成するときは、これらの設定を使用しています。
uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddress(imageBuffer);
size_t width = CVPixelBufferGetWidth(imageBuffer);
size_t height = CVPixelBufferGetHeight(imageBuffer);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef newContext = CGBitmapContextCreate(baseAddress, width, height, 8, width * 4, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);
CGImageRef newImage = CGBitmapContextCreateImage(newContext);
「サポートされていないパラメーターの組み合わせ」という警告は表示されなくなりましたが、ディスプレイは真っ白です。
変更時に追加する必要があります
NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange];
に
NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA];
すべて正常に動作します。私の問題は何ですか?