-
iOS 앱에서 Center Stage 전면 카메라 지원하기
iPhone 17, iPhone 17 Pro, iPhone Air의 전면 카메라에서 AVCapture API를 사용하는 Center Stage로 iOS 카메라 앱을 강화하세요. API로 확대/축소 및 회전 옵션을 활성화하여 더 유연하게 셀피와 비디오의 구도를 설정하고 단체 샷에 모든 사람이 자동으로 들어오도록 할 수 있는 방법을 살펴보세요. Center Stage를 통합하여 영상 통화 시 프레임이 자동으로 조정되도록 하세요. 가상 회의 및 FaceTime 통화에서 사용자가 화면의 전면 중앙에 담깁니다. 또한 실시간 화상 회의를 위해 비디오를 안정화하는 방법을 알아보세요.
챕터
- 0:00 - Introduction
- 1:07 - Center Stage front camera
- 2:09 - Center Stage for photos
- 3:09 - Capture session setup
- 3:56 - Dynamic aspect ratio
- 6:47 - Smart framing monitor
- 9:24 - Sensor orientation compensation
- 11:53 - Center Stage for video recordings
- 13:16 - Center Stage for video calls
리소스
- Supporting Center Stage front camera in your iOS app
- AVCam: Building a camera app
- AVFoundation
- Capture setup
관련 비디오
WWDC26
WWDC23
WWDC21
-
비디오 검색…
안녕하세요, 저는 Tracy입니다!
저는 카메라 소프트웨어 팀의 엔지니어입니다.
Center Stage 전면 카메라를 지원하는 방법을 iOS 앱에서 보여드리게 되어 기쁩니다. 저는 셀카를 정말 좋아합니다! 혼자 여행할 때나 친구들과 함께할 때나 말이죠. 딱 맞는 구도를 잡는 것이 항상 쉬운 건 아닙니다. 저처럼 셀카봉을 꺼내거나 팔이 가장 긴 친구에게 폰을 건네본 적 있으시죠. iPhone 17, iPhone Air, iPhone 17 Pro의 Center Stage 전면 카메라가 이 문제를 해결해 줍니다. 더 유연하게 사진의 구도를 잡을 수 있습니다. 먼저 Center Stage 전면 카메라에 대한 개요를 소개하겠습니다. 그런 다음, 사진을 위한 Center Stage API를 다루겠습니다. 마지막으로 동영상 녹화와 화상 통화에서 Center Stage를 지원하는 방법을 살펴보겠습니다.
전통적으로 스마트폰 전면 카메라 센서는 4x3 종횡비를 가지며, 폰의 방향에 따라 구도가 제한됩니다. 그러나 Center Stage 전면 카메라는 정사각형 이미지 센서를 탑재했습니다. 이 정사각형 형태 덕분에 어떤 종횡비든 선택할 수 있습니다. 세로 셀카도 찍고, 가로 셀카도 찍을 수 있습니다, iPhone을 돌리지 않고도 말이죠. 더 안정적으로 한 손으로 잡을 수 있습니다. 카메라가 중앙에 있어 시선 맞춤이 더 자연스럽습니다.
이 정사각형 센서에는 또한 95도 시야각의 렌즈가 탑재되어 있어, iPhone 전면 카메라 중 가장 넓습니다. 이 넓은 시야각으로 그룹 셀카 구도를 더 잘 잡을 수 있고, 동영상을 안정화하며, 화상 통화에서 화면 중앙에 위치하도록 해줍니다. 이제 Center Stage 전면 카메라의 기능을 이해하셨으니, 앱에서 완벽한 사진 구도 경험을 제공하는 방법을 알아보겠습니다. 여기서 핵심 기능은 Auto Zoom과 Auto Rotate입니다. 정사각형 센서와 넓은 시야각을 결합하고, 자동 얼굴 및 시선 감지를 활용하여, Center Stage 전면 카메라는 방향을 스마트하게 조정하며 좁은 뷰와 넓은 뷰 사이를 자동으로 전환합니다. 어떻게 작동하는지 보여드리겠습니다. 지금 야외에서 셀카를 찍고 있습니다. 친구 Karen이 합류하자 프레임이 축소됩니다. 더 많은 친구들이 합류하자 프레임이 회전해 모두를 포함합니다. 앱에서 이 기능을 구현하려면, 먼저 캡처 세션 설정을 살펴보고, 두 가지 API를 알아보겠습니다: 동적 종횡비와 스마트 프레이밍 모니터입니다. 마지막으로, 센서 방향 보정을 다루겠습니다. 일반적인 사진 캡처 설정으로 시작하겠습니다. 먼저, AVCaptureSession을 생성합니다. Center Stage 전면 카메라를 찾습니다. 이는 API에서 AVCaptureDevice로 표현되며 .builtInUltraWideCamera 디바이스 타입을 사용합니다. 해당 카메라에 대한 AVCaptureDeviceInput을 생성합니다. 카메라 미리보기를 받으려면 AVCaptureVideoPreviewLayer를 캡처 세션에 추가합니다. 또한, 사진을 받을 AVCapturePhotoOutput도 추가합니다. 입력과 출력을 추가하면, 캡처 세션이 암묵적으로 호환 가능한 미디어 타입 간의 AVCaptureConnections를 형성합니다. 설정이 완료되면, 동적 종횡비로 넘어가겠습니다, 수동 및 자동 프레이밍 모두의 기본 구성 요소입니다. iOS 26부터, AVCaptureDevice에는 dynamicAspectRatio 속성이 포함됩니다. 이 속성을 설정하면, 캡처 디바이스가 선택한 종횡비를 크롭합니다 앞서 보여드린 정사각형 이미지 센서에서, 캡처 세션을 다시 빌드하거나 미리보기를 중단하지 않고도 가능합니다. 전환은 매끄럽고 빠릅니다. 동적 종횡비를 지원하는 예시 포맷들이 나열된 표가 여기 있습니다. 전면 .builtInUltraWideCamera가 필요합니다 앞서 언급했듯이. 정사각형 포맷에서만 지원되며, 해상도 범위는 1280에서 4032까지입니다.
다섯 가지 종횡비를 사용할 수 있습니다: 3x4, 4x3, 9x16, 16x9, 1x1. 4032 사진 포맷은 3x4와 4x3만 지원한다는 점을 참고하세요 이 두 종횡비가 사진에서 가장 높은 해상도를 제공하기 때문입니다. 이러한 포맷 요구 사항을 염두에 두고, Tap to Rotate 버튼을 구현하는 방법을 보여드리겠습니다 동적 종횡비를 사용하여 방향을 전환하는. 먼저, Center Stage 전면 카메라를 선택합니다 AVCaptureDevice.DiscoverySession을 생성하여. .builtInUltraWideCamera를 관심 있는 유일한 디바이스 타입으로 지정하고, .front를 위치로 지정합니다. 단일 디바이스만 요청했으므로, 검색 세션의 디바이스 배열에서 첫 번째 요소를 가져오면 됩니다. 원하는 종횡비를 지원하는 포맷을 찾습니다. 여기서는 예시로 4x3을 사용하겠습니다. 각 포맷의 supportedDynamicAspectRatios 속성을 확인합니다. 이 속성은 해당 포맷이 지원하는 종횡비 배열을 반환합니다. 간단하게, 첫 번째 일치 항목을 선택합니다. 구성을 위해 디바이스를 잠근 후, 선택한 포맷을 activeFormat으로 설정합니다. 다음으로, 동적 종횡비를 4x3으로 설정합니다.
이 호출은 변경이 적용되는 첫 번째 버퍼의 타임스탬프를 반환합니다.
이 코드를 적용하면, 앱이 Tap to Rotate를 지원합니다, 한 번의 탭으로 방향을 변경할 수 있습니다. 다음은 스마트 프레이밍 모니터 API입니다. 동적 종횡비와 함께 작동하여 사람들이 화면에 드나들 때 자동으로 구도를 조정합니다. iOS 26부터, AVCaptureDevice에는 AVCaptureSmartFramingMonitor 객체가 포함됩니다. 이 모니터는 주기적인 프레이밍 권장 사항을 제공합니다 자동 얼굴 및 시선 감지를 기반으로. 각 권장 사항에는 종횡비와 줌 배율이 포함되며 앱에서 적용하거나 무시할 수 있습니다. 이 모니터는 사진 캡처를 위해 설계되었으므로, 4032 사진 포맷을 사용할 때만 권장 사항을 제공합니다. 이제 코드에서 모니터를 설정하는 방법을 알아보겠습니다. 동적 종횡비 설정에서 이미 선택된 초광각 전면 카메라로 시작합니다, 원하는 종횡비와 스마트 프레이밍을 모두 지원하는 포맷을 찾을 수 있습니다. 포맷을 찾으면, 구성을 위해 디바이스를 잠그고 activeFormat을 설정합니다.
다음으로, 카메라에서 smartFramingMonitor를 가져옵니다. 기본적으로, 모니터는 아무런 권장 사항을 제공하지 않습니다. 여기서 enabledFramings를 supportedFramings 전체로 설정합니다. 그러나 이를 지원되는 프레이밍의 일부로 제한할 수 있습니다, 예를 들어 좁은 줌과 넓은 줌 배율의 4x3 종횡비만으로. 모니터를 구성한 후, 모니터의 recommendedFraming 속성을 키-값 관찰합니다. 모니터가 새로운 프레이밍을 권장하면, 카메라의 동적 종횡비를 설정하여 권장 사항을 적용합니다 및 비디오 줌 배율. 부드러운 미리보기 전환을 위해, 먼저 aspectRatio를 설정하고, 그다음 zoomFactor를 설정합니다. 이제 언제든지 모니터를 시작할 수 있습니다, AVCaptureSession이 실행 중일 때도 포함해서. UI에서 사람들이 자동 프레이밍을 끌 수 있다면, 키-값 관찰을 해제하고 stopMonitoring을 호출합니다. 이제 앱이 Auto Zoom과 Auto Rotate를 지원합니다, 그룹 셀카에 최적의 프레이밍 권장 사항을 제공합니다. 사진 캡처의 마지막 주제, 센서 방향 보정입니다. 가장 초기의 iPhone 전면 카메라부터, 센서는 Landscape Left 방향으로 장착되어 왔습니다. 폰을 세로 방향으로 잡고 셀카를 찍으면, 이미지 버퍼는 사진 출력으로 전달됩니다 네이티브 센서 방향으로. 버퍼에는 EXIF 방향 메타데이터 태그가 포함되며, 재생 시 270도 회전해야 한다고 표시됩니다. 그러나 iPhone 17, iPhone Air, iPhone 17 Pro에서는, Center Stage 전면 카메라 센서가 세로 방향으로 장착됩니다. 앱이 이전에 작동하던 회전 값에 의존한다면, 사진이 옆으로 또는 거꾸로 표시될 수 있습니다.
이를 처리하기 위해, AVCapturePhotoOutput은 기본적으로 센서 방향 보정을 자동으로 적용합니다. 사진을 물리적으로 회전시키고 EXIF 메타데이터를 업데이트한 후 앱에 전달합니다. 결과 사진은 landscape left 방향으로, 이전 iPhone 전면 카메라와 동일합니다. 이전에 사용하던 동일한 회전 값을 계속 사용할 수 있습니다. 이 보정은 HEIC, JPEG, 압축되지 않은 처리 사진에만 적용된다는 점을 참고하세요. Bayer RAW나 Apple ProRAW 캡처에는 적용되지 않습니다. iOS 26부터, 이 동작을 제어할 수 있습니다 cameraSensorOrientation- CompensationEnabled 속성으로. AVCapturePhotoOutput을 사용한다면, 최상의 성능을 위해 보정을 끄고 테스트하여, 사진 방향이 올바르게 유지되는지 확인하세요. AVCaptureRotationCoordinator를 통한 이미지 회전 처리에 대해 더 알아보려면, "Support external cameras in your iPadOS app"을 WWDC 2023에서 확인하세요. 이제 비디오를 위한 Center Stage로 넘어가겠습니다. 동영상 녹화와 화상 통화를 다루겠습니다.
동적 종횡비 API는 녹화에서도 훌륭하게 작동합니다. Tap to Rotate로 더 넓은 뷰를 선택할 수 있습니다. 그러나 QuickTime 동영상 트랙은 모든 샘플이 동일한 크기를 가져야 합니다. 동영상 녹화는 중단되어야 합니다 캡처 중에 동적 종횡비를 변경하면. 앞서 살펴본 사진 캡처 설정입니다. 동영상 녹화에 맞게 수정하려면, AVCapturePhotoOutput 대신 AVCaptureMovieFileOutput을 사용할 수 있습니다.
이러한 설정에서, 녹화는 자동으로 중단됩니다 종횡비가 변경될 때. AVCaptureVideoDataOutput과 AVAssetWriter를 사용하여 동영상을 녹화할 수도 있습니다. setDynamicAspectRatio 완료 타임스탬프를 통해 현재 녹화를 종료하고 새로운 녹화를 시작할 수 있습니다 업데이트된 종횡비로. 동영상 녹화는 시네마틱 안정화 모드의 혜택도 받습니다: cinematicExtended와 cinematicExtendedEnhanced. 두 모드 모두 Center Stage 전면 카메라에서 얼굴 인식 기능을 사용합니다. 배경보다 피사체를 안정적으로 유지하는 것을 우선시합니다. 다음으로, 화상 통화를 위한 Center Stage를 알아보겠습니다.
지금 FaceTime 통화 중입니다. 친구가 트레일에서 합류하면, 카메라가 자동으로 넓어져 둘 다 포함합니다. 화상 회의 앱이 Center Stage를 이미 지원합니다 Voice over IP 백그라운드 모드를 사용하는 경우 전화가 잠긴 상태에서도 연결을 유지하려고. 사람들은 제어 센터의 비디오 효과 메뉴에서 직접 Center Stage를 켤 수 있습니다. 앱이 Voice over IP 백그라운드 모드를 사용하지 않더라도, Center Stage API를 여전히 채택할 수 있습니다. iPhone 전면 카메라에서 사용 가능하며, iPhone 17, iPhone Air, iPhone 17 Pro부터 시작합니다. 모든 시스템 전체 비디오 효과와 마찬가지로, 예를 들어 Portrait, Studio Light, Gestures, Center Stage는 프로세스별로 활성화됩니다. 활성화되면, 앱의 지원되는 모든 카메라에 적용됩니다. 다시 사진 캡처 설정입니다. 화상 통화의 경우, 출력이 다릅니다. 화상 회의 앱은 일반적으로 비디오 데이터 출력을 사용하여 스트림으로 비디오 버퍼를 받습니다. 표시, 인코딩, 전송은 모두 앱 레이어에서 처리됩니다. 이 설정을 염두에 두고, Center Stage를 활성화하는 방법입니다. 먼저, 지원되는 포맷을 찾습니다. 디바이스를 잠근 후 활성 포맷으로 설정합니다. 기본적으로, 사람들은 앱이 아닌 제어 센터를 통해 Center Stage를 토글합니다. 켜기 전에, 제어 모드를 설정합니다: cooperative 또는 app. Cooperative 모드는 사람들이 앱의 버튼으로도 제어할 수 있게 합니다. 그런 다음, isCenterStageEnabled를 true로 설정합니다. 이로써 Center Stage가 활성화됩니다.
이제 프레이밍이 자동으로 조정되어 모든 사람이 중앙에 위치합니다.
iPad에 처음 추가되었을 때의 Center Stage API에 대해 더 알아보려면, WWDC 2021의 "What's New in camera capture"를 확인하세요. Center Stage 외에도, 화상 통화 경험을 개선하는 방법이 하나 더 있습니다. Center Stage 전면 카메라는 지원합니다 iOS 26부터 실시간, 저지연 안정화 모드를. 기본적으로 꺼져 있습니다. 켜려면, preferredVideoStabilizationMode를 AVCaptureConnection에서 lowLatency로 설정합니다. 동일한 화상 통화의 나란히 비교 영상입니다 저지연 안정화가 켜진 경우와 꺼진 경우. 왼쪽 영상에서는 안정화가 꺼져 있습니다. 걸을 때 눈에 띄는 흔들림이 있습니다. 오른쪽 영상에서는 안정화가 켜져 있습니다. 영상이 훨씬 더 안정적입니다.
이제 필요한 모든 것이 갖춰졌습니다 iOS 앱에서 Center Stage 전면 카메라를 지원하기 위한. 앱의 프레이밍 경험을 더욱 개선할 다음 단계들입니다. 첫째, 앱에 프레이밍 컨트롤을 통합하여 방향 전환, Auto Zoom 및 Auto Rotate 토글, Center Stage 활성화를 지원하세요.
둘째, 전면 카메라 성능을 최적화하세요. 센서 방향 보정을 끄고 테스트하세요. 앱이 사진 회전을 올바르게 처리하는지 확인하세요. 탁월한 해상도와 디테일을 위해 1800만 화소 사진 캡처 지원도 고려하세요 뛰어난 해상도와 디테일을 위해. 모범 사례는 WWDC 2026의 "Implement high resolution photo capture"를 확인하세요. Center Stage 전면 카메라가 셀카를 찍는 방식을 완전히 바꿔놓았습니다 iPhone으로 화상 통화할 때도 마찬가지입니다. 이 카메라가 여러분의 앱을 어떻게 변화시킬지 기대됩니다.
-
-
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
-
-
- 0:00 - Introduction
Center Stage front camera is available on iPhone 17, iPhone Air, and iPhone 17 Pro. Discover how its square sensor and wide field of view give you greater flexibility to perfectly frame selfies, group shots, and video calls.
- 1:07 - Center Stage front camera
Take a closer look at the Center Stage front camera's hardware. Learn how its square image sensor and 95-degree field of view let you shoot in any orientation without rotating your device, keeping your grip secure and eye contact natural.
- 2:09 - Center Stage for photos
Bring a perfect framing experience to your app. Explore how Auto Zoom and Auto Rotate combine the wide field of view with automatic face and gaze detection to smartly adjust framing as people move in and out of your shots.
- 3:09 - Capture session setup
An overview of the AVCaptureSession setup required to use the Center Stage front camera. Configure an AVCaptureSession with the built-in ultra-wide camera. Add a video preview layer, and receive photos via AVCapturePhotoOutput.
- 3:56 - Dynamic aspect ratio
Discover the dynamic aspect ratio API. Learn how to query supported formats and seamlessly switch aspect ratios without interrupting your camera preview or rebuilding the capture session.
- 6:47 - Smart framing monitor
Automate your framing with AVCaptureSmartFramingMonitor. Learn how to configure the monitor to receive periodic recommendations for aspect ratio and zoom factor based on face and gaze detection, keeping your subjects perfectly framed.
- 9:24 - Sensor orientation compensation
Understand how iOS handles the native portrait orientation of the Center Stage front camera sensor. Learn how AVCapturePhotoOutput automatically applies orientation compensation.
- 11:53 - Center Stage for video recordings
Apply dynamic aspect ratio to video recordings using AVCaptureMovieFileOutput or AVAssetWriter. Learn how to manage recording transitions and take advantage of cinematic stabilization modes for exceptionally smooth footage.
- 13:16 - Center Stage for video calls
Enhance your video conferencing app with Center Stage. Learn how to adopt the API in cooperative or app mode to keep everyone centered, and discover how to enable low-latency stabilization for significantly smoother video calls.