react rct not community ios camera avfoundation

ios - rct - undefined is not an object react native video



Capture la imagen del video usando AVFoundation (1)

Estoy tratando de capturar una imagen de un video en mi iPad. Utilicé el ejemplo AVCam de Apple como punto de partida.

Pude ver el video en mi aplicación y tomar fotos de él. Mi problema es que el tamaño de píxel de la imagen resultante es incorrecto. Quiero una imagen de pantalla completa (1024x768) pero obtengo una más pequeña (1024x720).

Esas son mis variables de instancia:

@property (retain) AVCaptureStillImageOutput *stillImageOutput; @property (retain) AVCaptureVideoPreviewLayer *previewLayer; @property (retain) AVCaptureSession *captureSession; @property (retain) AVCaptureConnection *captureConnection; @property (retain) UIImage *stillImage;

Aquí el código para tomar fotos:

- (void)takePicture { AVCaptureConnection *videoConnection = nil; for (AVCaptureConnection *connection in [[self stillImageOutput] connections]) { for (AVCaptureInputPort *port in [connection inputPorts]) { if ([[port mediaType] isEqual:AVMediaTypeVideo]) { videoConnection = connection; break; } } if (videoConnection) { break; } } NSLog(@"about to request a capture from: %@", [self stillImageOutput]); [[self stillImageOutput] captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error) { CFDictionaryRef exifAttachments = CMGetAttachment(imageSampleBuffer, kCGImagePropertyExifDictionary, NULL); if (exifAttachments) { NSLog(@"attachements: %@", exifAttachments); } else { NSLog(@"no attachments"); } NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; UIImage *image = [[UIImage alloc] initWithData:imageData]; [self setStillImage:image]; [image release]; [[NSNotificationCenter defaultCenter] postNotificationName:kImageCapturedSuccessfully object:nil]; }]; }

Pensé en cambiar el tamaño de la imagen final, pero esta solución disminuiría la calidad de la imagen. También me di cuenta de que el diccionario CFDictionaryRef exifAttachments contiene un valor PixelYDimension = 720; pero parece que no puedo encontrar una manera de interactuar con él.

Cualquier ayuda sería muy apreciada. Gracias de antemano y que tengas un buen día,

Alex.

EDITAR: Me gustaría señalar que cuando digo "tomar una foto de un video" quise decir que el video está en vivo desde la cámara del iPad y no es una grabación.


Encontré una solución a mi problema. Aquí va en caso de que alguien busque esto en el futuro.

Para interactuar con la cámara usando AVFoundation, necesitamos iniciar una variable AVCaptureSession . Después de hacer esto, podemos modificar el SessionPreset que indica el nivel de calidad o tasa de bits de la salida. Hay un conjunto de constantes diferentes . Para tomar 1024x768 fotos, utilicé AVCaptureSessionPresetPhoto