-
Incorpora la cámara frontal Center Stage en tu app para iOS
Potencia tu app de cámara de iOS con Encuadre Centrado utilizando las API AVCapture y la cámara frontal del iPhone 17, el iPhone 17 Pro y el iPhone Air. Descubre cómo las API permiten utilizar opciones de zoom y rotación, lo que ofrece formas más flexibles de encuadrar selfies y videos, y de incluir automáticamente a todos los participantes en una foto de grupo. Integra Encuadre Centrado en las videollamadas para que el encuadre se ajuste automáticamente, de modo que aparezcas en el centro de las reuniones virtuales y las llamadas de FaceTime. Obtén información sobre cómo estabilizar el video para videoconferencias en tiempo real.
Capítulos
- 0:00 - Introducción
- 1:07 - Cámara frontal Center Stage
- 2:09 - Encuadre Centrado para fotos
- 3:09 - Configuración de la sesión de captura
- 3:56 - Relación de aspecto dinámica
- 6:47 - Monitor de encuadres inteligentes
- 9:24 - Compensación de orientación del sensor
- 11:53 - Encuadre Centrado para grabaciones de video
- 13:16 - Encuadre Centrado para videollamadas
Recursos
- Supporting Center Stage front camera in your iOS app
- AVCam: Building a camera app
- AVFoundation
- Capture setup
Videos relacionados
WWDC26
WWDC23
WWDC21
-
Buscar este video…
-
-
5:29 - Support dynamic aspect ratio
// Select the Center Stage front camera import AVFoundation let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInUltraWideCamera], mediaType: .video, position: .front) guard let camera = deviceDiscoverySession.devices.first else { print("Failed to find the capture device") return } // Find a format that supports the 4x3 aspect ratio for format in camera.formats { if format.supportedDynamicAspectRatios.contains(.ratio4x3) { try! camera.lockForConfiguration() camera.activeFormat = format camera.unlockForConfiguration() break } } // Set dynamic aspect ratio try! camera.lockForConfiguration() let timestamp = try! await camera.setDynamicAspectRatio(.ratio4x3) print("Applied dynamic aspect ratio at timestamp: \(timestamp)") camera.unlockForConfiguration() -
7:39 - Support smart framing monitor
// Find a format that supports smart framing import AVFoundation for format in camera.formats { if format.isSmartFramingSupported { try! camera.lockForConfiguration() camera.activeFormat = format camera.unlockForConfiguration() break } } // Configure the smart framing monitor let monitor = camera.smartFramingMonitor! try! camera.lockForConfiguration() monitor.enabledFramings = monitor.supportedFramings camera.unlockForConfiguration() // Monitor framing recommendations observation = monitor.observe(\.recommendedFraming, options: [.new,]) { monitor, change in if let framing = monitor.recommendedFraming { Task { try! camera.lockForConfiguration() try! await camera.setDynamicAspectRatio(framing.aspectRatio) camera.videoZoomFactor = CGFloat(framing.zoomFactor) camera.unlockForConfiguration() } } } // Start the smart framing monitor try! monitor.startMonitoring() // Stop the smart framing monitor observation?.invalidate() observation = nil monitor.stopMonitoring() -
14:44 - Support Center Stage for video calls
// Find a format that supports Center Stage import AVFoundation for format in camera.formats { if format.isCenterStageSupported { try! camera.lockForConfiguration() camera.activeFormat = format camera.unlockForConfiguration() break } } // Turn on Center Stage AVCaptureDevice.centerStageControlMode = .cooperative AVCaptureDevice.isCenterStageEnabled = true
-