usar precio plus doble como caracteristicas camara a1784 ios avfoundation

ios - precio - iPhone 7 Plus-Cámara dual AVFoundation



iphone a1784 caracteristicas (2)

Estoy investigando esto activamente en este momento, pero ahora que el iPhone 7 Plus tiene un sistema de cámara dual, ¿AVFoundation le permitirá manejar los cuadros de video de cada cámara específica simultáneamente?

Estoy pensando / esperando que sea capaz de manejar la salida de dos instancias de AVCaptureDevice al mismo tiempo dada una determinada posición.


En la documentación actualizada de AVFoundation ( AVCaptureDeviceType ) hay nuevos tipos de dispositivos: builtInWideAngleCamera y builtInTelephotoCamera . Por lo tanto, debería ser posible crear múltiples sesiones de captura y obtener la retroalimentación de ambos al mismo tiempo.


Solo puede agregar una cámara a la vez a AVCaptureSession. Por ejemplo, puede cambiar entre la cámara frontal y la trasera, pero no usar ambas al mismo tiempo. Es lo mismo con las dos cámaras traseras en el 7 Plus, tienes que elegir cualquiera. Sin embargo, hay una pequeña diferencia, ya que también puede llamar a una "cámara dúo" que combina las imágenes de ambas cámaras cuando hace zoom. Pero eso solo está disponible para fotografías y solo obtendrá una imagen / búfer de captura. Para el video tienes que elegir cualquiera de las cámaras.

Para elegir la cámara, puede utilizar la nueva sesión AVCaptureDeviceDiscoverySession. Para utilizar la cámara dúo:

@property (nonatomic) AVCaptureDevice *backCamera; @property (nonatomic) AVCaptureDeviceInput *backCameraInput; if([AVCaptureDeviceDiscoverySession class]){ NSArray *allTypes = @[AVCaptureDeviceTypeBuiltInDuoCamera, AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInTelephotoCamera ]; AVCaptureDeviceDiscoverySession *discoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:allTypes mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionBack]; for(AVCaptureDevice *device in discoverySession.devices) { if(device.deviceType== AVCaptureDeviceTypeBuiltInDuoCamera){ self.backCamera = device; self.backCameraInput = [AVCaptureDeviceInput deviceInputWithDevice:self.backCamera error:&error]; } } } if(!self.backCamera){ self.backCamera = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; self.backCameraInput = [AVCaptureDeviceInput deviceInputWithDevice:self.backCamera error:&error]; }

Usar cámara ancha y tele individual.

@property (nonatomic) AVCaptureDevice *backCamera; @property (nonatomic) AVCaptureDeviceInput *backCameraInput; @property (nonatomic) AVCaptureDevice *teleCamera; @property (nonatomic) AVCaptureDeviceInput *teleCameraInput; if([AVCaptureDeviceDiscoverySession class]){ NSArray *allTypes = @[AVCaptureDeviceTypeBuiltInDuoCamera, AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInTelephotoCamera ]; AVCaptureDeviceDiscoverySession *discoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:allTypes mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionBack]; for(AVCaptureDevice *device in discoverySession.devices) { if(device.deviceType==AVCaptureDeviceTypeBuiltInWideAngleCamera){ self.backCamera = device; self.backCameraInput = [AVCaptureDeviceInput deviceInputWithDevice:self.backCamera error:&error]; } if(device.deviceType==AVCaptureDeviceTypeBuiltInTelephotoCamera){ self.teleCamera = device; self.teleCameraInput = [AVCaptureDeviceInput deviceInputWithDevice:self.teleCamera error:&error]; } } } if(!self.backCamera){ self.backCamera = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; self.backCameraInput = [AVCaptureDeviceInput deviceInputWithDevice:self.backCamera error:&error]; }

Si no lo hace o conserva su código anterior, solo utilizará la cámara ancha incluso si hace zoom.

EDITAR: En iOS 11 hay un nuevo AVCapturePhotoSettings llamado dualCameraDualPhotoDeliveryEnabled. Le permite tomar dos imágenes fijas simultáneamente, sin embargo, no hay transmisión / video.