← Alle Beitrage

Eine reaktionsschnelle Kamera-App in iOS 27 entwickeln

Apples Team für Kameraleistung hat die Startzeit der Kamera halbiert, indem es alles bis auf die Vorschauausgabe aufschiebt: Ein Start, der nahezu eine Sekunde dauerte, sinkt auf etwa die Hälfte, eine zweifache Verbesserung, gemessen auf einem Lichtbrett im Labor1. Der Hebel ist die Deferred-Start-API, verfügbar ab iOS 26, und das Prinzip dahinter ist unmissverständlich. Der mit Abstand wichtigste Faktor dafür, dass sich ein Kamerastart schnell anfühlt, ist, wie schnell das Vorschaubild auf dem Display erscheint1.

Der Rahmen dieses Beitrags lautet „Was eine AVFoundation-App tun muss, um sich sofort einsatzbereit anzufühlen”, denn die Lücke zwischen einer Kamera, die technisch läuft, und einer, die sich einsatzbereit anfühlt, ist genau jene Lücke, durch die ein fallender Dominostein schlüpft. Drei WWDC26-Sessions decken das Thema ab: Session 303 über reaktionsschnellen Start und durchgehende Aufnahme, Session 304 über hochauflösende Aufnahmen ohne Einbußen bei der Reaktionsfähigkeit und Session 341 über die neue quadratische Center-Stage-Frontkamera. Sie sind über dieselbe Capture-Session-Architektur verbunden, sodass die Einführung einer Funktion die anderen günstiger macht.

TL;DR

  • Die vierstufige Startsequenz (App-Start, Session konfigurieren/starten, Output-Initialisierung, Vorschau-Streaming) verbringt die meiste Zeit mit der Initialisierung der Ausgaben. Deferred Start schiebt jede Ausgabe außer derjenigen, die die Vorschau rendert, auf und halbiert so den Start in Apples Labormessung1.
  • Auf AVCaptureVideoPreviewLayer basierende Apps, die gegen iOS 26+ neu kompiliert werden, erhalten Deferred Start automatisch und kostenlos; Apps mit Video-Data-Output müssen den manuellen Modus übernehmen, um denselben Gewinn zu erzielen1.
  • Das Aufschieben der Foto-Ausgabe beschleunigt die Vorschau, aber nicht die erste Aufnahme. Kombinieren Sie es daher mit isResponsiveCaptureEnabled auf AVCapturePhotoOutput, um die Aufnahme zu puffern, bis die Verarbeitung bereit ist1.
  • Pro Video Storage, neu in iOS 27, reserviert vorab einen systemweiten Speicherpool, sodass ProRes-Schreibvorgänge mit hoher Datenrate deterministisch bleiben, statt unter Dateisystemkonflikten zu stottern1.
  • Die Center-Stage-Frontkamera (iPhone 17, iPhone Air, iPhone 17 Pro) ist ein quadratischer Sensor, der als vordere .builtInUltraWideCamera bereitgestellt wird; dynamicAspectRatio schneidet jedes Seitenverhältnis aus dem Quadrat heraus, ohne die Session neu aufzubauen, und AVCaptureSmartFramingMonitor steuert Auto Zoom und Auto Rotate2.

Die Startsequenz hat vier Stufen

Watch on Apple Developer ↗

Jake, ein Ingenieur in Apples Team für Kameraleistung, geht in Session 303 die vier Startstufen durch.

Ein Kamerastart durchläuft vier Stufen, und Apples Ingenieur Jake schlüsselt sie der Reihe nach auf1. Zuerst startet die App: Der Linker lädt das Binary, statische Initialisierer laufen, UI-Szenen werden erstellt. Zweitens wird die Session konfiguriert und gestartet: Die Initialisierung von AVCaptureSession, das Festschreiben der Konfiguration und das Starten der Session verbrauchen allesamt Zeit und Systemressourcen. Drittens initialisiert sich jede AVCaptureOutput, und diese Zeit skaliert mit der Anzahl der Ausgaben und ihren Qualitätseinstellungen. Viertens beginnt die Vorschau zu streamen, und die Frames fließen zur App1.

Die Arbeit, dies schnell zu machen, beginnt in der UI. Teilen Sie den Start in zwei Phasen auf: Ressourcen, die für die Anzeige der Vorschau entscheidend sind, und Ressourcen, die warten können, bis die Vorschau läuft1. In AVCam, AVFoundations klassischer Beispiel-Kamera-App, sind die Kameravorschau und der Auslöser die einzigen Elemente, die jemand im Moment des Starts braucht; der Bildbereich und die Modusauswahl können danach eingeblendet werden. Das Prinzip gilt über die UI hinaus. Jede Ressource, die vor dem Rendern der Vorschau erstellt wird, verlängert die Startzeit1.

Die Session selbst ist der nächste Druckpunkt. Da AVCaptureSession jedes Capture-Objekt koordiniert, erstellt Jake sie zuerst, sobald der Hauptthread das UI-Setup abgeschlossen hat. Doch das Erstellen der Session blockiert den Hauptthread, also verlagern Sie ihre Erstellung vom Hauptthread weg, damit sie parallel zum Setup der UI-Szene läuft und ein Hängenbleiben vermieden wird1. Dieselbe Vorsicht gilt für startRunning() und stopRunning(): Beide sind blockierende Aufrufe, und sie auf dem Hauptthread aufzurufen, lässt die App hängen1. Schreiben Sie eine einzige Konfiguration vorab fest, statt mehrere festzuschreiben, da jede Neukonfiguration den Start verlängert1.

Deferred Start: Der zweifache Gewinn

Das Initialisieren der Ausgaben ist der teuerste Teil des Starts, und die meisten Ausgaben sind in diesem Moment Ballast. Um die Vorschau zu rendern, braucht die App nur einen Preview-Layer oder eine einzige Ausgabe; die Movie-File-Ausgabe und die Foto-Ausgabe tragen nichts zum ersten Frame bei1. Deferred Start nutzt genau das aus. Es schiebt die Output-Initialisierung auf, bis der Start abgeschlossen ist, sodass nur die Vorschauausgabe initialisiert wird, bevor der erste Frame angezeigt wird1.

Jede AVCaptureOutput und der AVCaptureVideoPreviewLayer tragen eine Eigenschaft isDeferredStartEnabled; setzen Sie sie auf true, um diese Ausgabe aufzuschieben, und schieben Sie alles auf außer derjenigen, die die Vorschau rendert1. Es gibt zwei Modi, um zu entscheiden, wann die aufgeschobene Arbeit läuft. Im automatischen Modus wählt das System den besten Zeitpunkt, kurz nachdem die Vorschau erscheint, und löst zwei Delegate-Callbacks aus, damit die App es verfolgen kann: sessionWillRunDeferredStart bevor die Initialisierung beginnt, und sessionDidRunDeferredStart nachdem sie abgeschlossen ist1. Apps, die gegen das SDK von iOS 26 oder höher neu kompiliert werden, erhalten den automatischen Modus standardmäßig, wobei automaticallyRunsDeferredStart bereits auf true gesetzt ist1.

// Automatic mode — defer everything but the preview layer
session.beginConfiguration()
session.automaticallyRunsDeferredStart = true      // true by default on iOS 26+ SDK

photoOutput.isDeferredStartEnabled = true           // defer the photo output
// videoPreviewLayer renders preview, so it is NOT deferred

session.commitConfiguration()
session.startRunning()                              // call off the main thread

Der manuelle Modus gibt die Kontrolle an die App zurück. Setzen Sie automaticallyRunsDeferredStart auf false, erledigen Sie die Startarbeit, die zuerst kommen muss (Einlesen von Einstellungen, Aufbau unkritischer UI), und rufen Sie dann runDeferredStartWhenNeeded() auf, um dem System mitzuteilen, dass es fortfahren darf1. Der manuelle Modus ist für eine Architektur besonders wichtig: Apps, die die Vorschau mit AVCaptureVideoDataOutput rendern. Deferred Start gilt nicht automatisch für eine Data-Output, sodass diese Apps den manuellen Deferred Start übernehmen, um denselben Startgewinn zu erzielen, üblicherweise indem sie ihn auslösen, sobald der erste Frame dargestellt wurde (Jake verfolgt die Darstellung über einen CAMetalLayer)1.

Apple hat das Ergebnis auf einem Lichtbrett im Labor verifiziert und dabei zwei Telefone verglichen, die ein sich ausdehnendes LED-Muster aufnahmen. Das Telefon mit aktiviertem Deferred Start erfasste das Muster, während sowohl rote als auch grüne LEDs leuchteten; das Telefon ohne beendete den Start erst, nachdem die grünen LEDs fast verblasst waren1. Zeitlich gemessen dauerte der Start ohne Deferred Start nahezu eine Sekunde; mit ihm wurde der Start halbiert, eine zweifache Verbesserung, wobei komplexe Capture-Sessions sogar noch mehr profitierten1.

Bündeln Sie störende Änderungen, damit der Graph nur einmal neu aufgebaut wird

Die Disziplin der einzigen Konfiguration aus der Startsequenz hat einen Mechanismus dahinter, den ein Kameraingenieur im WWDC26-Labpanel erläuterte. AVCaptureSession koordiniert einen Graphen aus Capture-Objekten, und jedes Mal, wenn Sie eine Eigenschaft setzen, die eine störende Änderung erzwingt, löst die Session diesen Graphen neu auf5. Eine Neukonfiguration bedeutet üblicherweise, mehr als eine Sache auf einmal zu ändern, vom Fotomodus in den Videomodus zu wechseln oder ein aktives Format auf eine niedrigere Auflösung herunterzustufen, sodass das Setzen jeder Eigenschaft für sich allein den Graphen bei jedem Schritt neu aufbaut5. Verpacken Sie den gesamten Stapel in beginConfiguration() und commitConfiguration(), und der Graph wird genau einmal neu aufgelöst, beim Commit, ganz gleich, ob der Stapel eine Änderung oder zwanzig enthält5. Der Panelteilnehmer verglich das Paar mit einer Banktransaktion: beginConfiguration() eröffnet sie, die Abhebung und die Einzahlung bleiben in der Schwebe, und commitConfiguration() gleicht sie gemeinsam ab5.

Deferred Start lässt sich sauber mit einem weiteren Hebel vor dem Start kombinieren. Das Panel bestätigte, dass Deferred Start und das vorbereitete Photo-Settings-Array (setPreparedPhotoSettingsArray(_:completionHandler:) auf AVCapturePhotoOutput) orthogonal und komplementär sind: Das eine schiebt die Output-Bereitschaft auf, sodass die Vorschau zuerst erscheint, während das andere die Worst-Case-Ressourcen der Standbild-Pipeline vorab reserviert, ohne Konflikt kombinierbar5.

Schnelle Vorschau ist nicht schnelle Aufnahme

Das Aufschieben der Foto-Ausgabe hat einen Haken, der klar benannt werden sollte: Die Vorschau startet viel früher, aber die Zeit bis zur ersten Aufnahme bleibt gleich, weil das System die aufgeschobene Foto-Ausgabe immer noch fertig initialisieren muss, bevor eine Aufnahme beginnen kann1. Die Vorschau läuft, der Benutzer tippt auf den Auslöser, und der Moment ist trotzdem dahin.

Die Lösung ist isResponsiveCaptureEnabled auf AVCapturePhotoOutput. Die Eigenschaft fügt eine Pufferung zwischen dem Starten einer Aufnahme und dem Beginn der Verarbeitung hinzu, sodass jemand den Moment festhalten kann, selbst wenn die Foto-Ausgabe noch nicht vollständig bereit ist1. In Apples Domino-Demo erhielt das Telefon, das responsive Capture zusammen mit Deferred Start ausführte, eine saubere Aufnahme der fallenden Dominosteine, während das Kontrolltelefon sie völlig verpasste1. Die Kombination ist das empfohlene Muster: Übernehmen Sie Deferred Start mit der Foto-Ausgabe in voller Qualität, halten Sie den Start schnell, und lassen Sie responsive Capture das Zeitfenster abdecken, bevor die Foto-Ausgabe die Initialisierung abschließt1.

Hochauflösende Aufnahmen in schneller Folge

Watch on Apple Developer ↗

Mohit, ein Ingenieur in Apples Camera-Software-Team, demonstriert in Session 304 die schnelle Aufnahmepriorisierung auf einem Basketballplatz.

Session 304 erweitert die Geschichte der Reaktionsfähigkeit auf hochauflösende Serienaufnahmen. Der Mechanismus ist isFastCapturePrioritizationEnabled auf AVCapturePhotoOutput, eine bestehende und keine neue Eigenschaft: Wenn aktiviert, erkennt das System mehrere Aufnahmen in schneller Folge und passt die Fotoqualität von der höchsten Qualitätseinstellung auf ausgewogen an, was weniger Zeit für sowohl Aufnahme als auch Verarbeitung benötigt4. Der neue Teil kommt mit dem Betriebssystem. Ab iOS 27 auf iPhone 16 und iPhone 17 verarbeitet das System diese ausgewogenen schnellen Aufnahmen zusätzlich später per Deferred Photo Processing, der Hintergrund-Pipeline aus der WWDC23, die ein Foto fertigstellt, ohne die nächste Aufnahme zu blockieren (unterscheidet sich von der oben genannten Deferred-Start-Start-API)4. In Apples Basketball-Demo war der Unterschied eine blockierte Aufnahme gegenüber fünf reaktionsschnellen Aufnahmen desselben Spielzugs, sobald Deferred Processing, responsive Capture und schnelle Aufnahmepriorisierung allesamt aktiviert waren4.

Dieselbe Session aktualisiert die Tabelle zur hochauflösenden Abdeckung. Die Unterstützung für 24-MP- und 48-MP-Aufnahmen erstreckt sich auf die Telefotokamera des iPhone 16 Pro und die Ultraweitwinkelkamera des iPhone 17, und eine 18-MP-Option gibt es nur auf der Center-Stage-Frontkamera des iPhone 174. Die Priorisierungseinstellung steuert, was Sie anfordern können: 12 MP funktioniert über alle drei Priorisierungsstufen hinweg, ein 48-MP-Einzelbild benötigt ausgewogen oder Qualität, und die aus mehreren Frames zusammengeführten 18-MP- und 24-MP-Formate erfordern die Priorisierung Qualität wegen ihrer längeren Verarbeitung4. Deferred Processing ist das, was diese Mehrbild-Fusionen in einer reaktionsschnellen App praktikabel macht, da die schwere Arbeit im Hintergrund stattfindet, ohne sich Speicher mit der Capture-Session zu teilen4.

Vorschau rendern: Layer versus Data Output

Zwei Ausgaben können die Vorschau antreiben, und die Wahl bestimmt, wie viel sonst noch zu tun ist. AVCaptureVideoPreviewLayer zeigt exakt das, was die Kamera sieht, ohne Arbeit pro Frame in der App: Es übernimmt das HDR-Tone-Mapping automatisch, hält den CPU- und GPU-Overhead niedrig und ist auf eine Anzeige mit geringer Latenz abgestimmt1. Der Kompromiss ist, dass es keinen Zugriff pro Frame bietet1. (Für die HDR-Seite dieses automatischen Tone-Mappings behandelt der Beitrag zu AVFoundation HDR und Apple Log die Aufnahme- und Anzeige-Pipeline in der Tiefe.)

AVCaptureVideoDataOutput ist die Alternative, wenn die Verarbeitung pro Frame Priorität hat. Es nimmt den Platz des Preview-Layers als primäre Anzeigeausgabe ein und gibt der App die Kontrolle über den Frame-Fluss: benutzerdefinierte UI-Overlays pro Frame, Metal-Integration, Frame-Analyse1. Der Preis ist die oben erwähnte Übernahme des manuellen Deferred Start, plus eine Disziplinregel: Halten Sie die Arbeit pro Frame kurz, um Frame-Drops zu vermeiden und das Erlebnis flüssig zu halten1. Verwenden Sie den Preview-Layer, wenn Sie nur den Feed anzeigen müssen; greifen Sie zur Data-Output, wenn Sie tatsächlich Frames verarbeiten.

Leistung unter Belastung aufrechterhalten

Die meiste Kameraentwicklung findet am Schreibtisch in einer kontrollierten Umgebung statt, aber Menschen nutzen die App an einem heißen sonnigen Tag, und das System drosselt, während sich das Gerät erwärmt1. Zwei Kosten-APIs lassen eine App das kommen sehen. Hardware-Kosten geben einen Wert zwischen 0 und 1 zurück, der den Anteil der von der Session genutzten Hardware darstellt; über 1 bedeutet, dass das System die Konfiguration nicht unterstützen kann1. Die Kosten steigen mit der Anzahl der Kameras, den aktiven Formaten (1080p versus 4K), der Bildrate und damit, ob das Format gebinnt ist. Hardware-Kosten gehen von der maximalen Bildrate eines Formats aus, sodass eine App, die mit 30 fps auf einem 60-fps-Format läuft, die Bildraten-Überschreibung setzen sollte, um die ausgewiesenen Kosten zu senken1.

Auch die Kosten des Systemdrucks geben 0 bis 1 zurück und stellen die Kosten des aktuellen Zustands dar, und das Überschreiten von 1 macht die Konfiguration nicht aufrechtzuerhalten1. Das Übernahmemuster: Prüfen Sie nach dem Festschreiben der Konfiguration, dass die Hardware-Kosten bei oder unter 1 bleiben, beobachten Sie dann den systemPressureState von AVCaptureDevice und registrieren Sie einen Handler für Änderungen1. Während der Druck steigt, reduziert der Handler die Bildrate des Capture-Geräts, drosselt die Arbeit von GPU oder Apple Neural Engine und minimiert die UI-Arbeit1.

Pro Video Storage: Deterministische ProRes-Schreibvorgänge

Watch on Apple Developer ↗

Session 303 stellt Pro Video Storage vor, neu in iOS 27, für Videoaufnahmen mit hoher Datenrate.

Herkömmliche Dateisystem-I/O ist nicht deterministisch: Das System jongliert konkurrierende Operationen, Speicherfragmentierung und Speicherverschleiß, sodass das Schreib-Timing variiert1. Aufnahmen mit hoher Datenrate wie ProRes benötigen eine durchgehend hohe Bandbreiten-I/O, um ohne Frame-Verluste aufzunehmen, und variables Timing ist genau die falsche Eigenschaft. Pro Video Storage, neu in iOS 27, geht das Problem an, indem es vorab reservierten Speicher für Aufnahmen mit hoher Datenrate verfolgt und verwaltet. Es ist eine systemweite Ressource, die sich alle Apps teilen, und es lässt sich in die bestehenden Movie-Recording-APIs einklinken1.

Apps melden sich an, indem sie usesProVideoStorage auf AVCaptureMovieFileOutput setzen, oder auf AVAssetWriter, wenn sie aus einer Video-Data-Output aufnehmen1. Der Speicher übernimmt dann die Zuteilung und die Datei-I/O und hält die Schreibleistung für Codecs mit hoher Datenrate konstant. Die Übernahmesequenz: Pro Video Storage ist ein Singleton, also beziehen Sie es über seinen geteilten Accessor und bestätigen Sie die Unterstützung; bauen Sie die Movie-File-Ausgabe, die Session, die Verbindungen und das gewählte Format auf; prüfen Sie isProVideoStorageSupported auf der Movie-File-Ausgabe; bestätigen Sie, dass der Speicher nicht mit einer Größenänderung oder dem Erstellen oder Löschen von Dateien beschäftigt ist; aktivieren Sie es dann und starten Sie die Aufnahme1. Während der Aufnahme schreibt die Aufzeichnung in den vorab reservierten Pool und verschiebt sich an den endgültigen Ort, sobald die Aufnahme beendet ist1. Die Kameraeinstellungen erlauben es nun, zu steuern, wie viel Speicher reserviert werden soll, die Methode remainingCapacity meldet, was übrig ist, und eine Methode zum Öffnen der Einstellungen bringt den Benutzer aus der App zu dieser UI1.

Die Center-Stage-Frontkamera ist quadratisch

Watch on Apple Developer ↗

Tracy, eine Ingenieurin in Apples Camera-Software-Team, stellt in Session 341 die quadratische Center-Stage-Frontkamera vor.

Herkömmliche Frontkamerasensoren haben ein Seitenverhältnis von 4:3, das die Bildausschnittswahl an die Telefonausrichtung bindet. Die Center-Stage-Frontkamera auf iPhone 17, iPhone Air und iPhone 17 Pro verwendet einen quadratischen Bildsensor, gepaart mit einem 95-Grad-Objektiv, dem weitesten Sichtfeld aller iPhone-Frontkameras2. Apples Ingenieurin Tracy umreißt den Nutzen: Die quadratische Form lässt den Benutzer jedes Seitenverhältnis wählen und ein Hoch- oder Querformat-Selfie aufnehmen, ohne das Telefon zu drehen, was einen sicheren einhändigen Griff und ein zentriertes Bild mit natürlichem Augenkontakt bewahrt2.

Das Session-Setup ist konventionelle AVFoundation3. Erstellen Sie eine AVCaptureSession, finden Sie die Kamera als AVCaptureDevice mit dem vorderen Gerätetyp .builtInUltraWideCamera, verpacken Sie sie in einen AVCaptureDeviceInput, fügen Sie einen AVCaptureVideoPreviewLayer für die Vorschau und eine AVCapturePhotoOutput für Fotos hinzu; die Session bildet AVCaptureConnections implizit zwischen kompatiblen Medientypen2.

Der Baustein ist dynamicAspectRatio auf AVCaptureDevice, verfügbar ab iOS 26. Das Setzen der Eigenschaft schneidet das gewählte Seitenverhältnis aus dem quadratischen Sensor heraus, ohne die Session neu aufzubauen oder die Vorschau zu unterbrechen, sodass der Wechsel nahtlos ist2. Die Eigenschaft unterstützt fünf Seitenverhältnisse (3:4, 4:3, 9:16, 16:9 und 1:1) auf quadratischen Formaten von 1280 bis hinauf zu 4032, mit einer Einschränkung: Das 4032-Fotoformat unterstützt nur 3:4 und 4:3, weil diese die höchste Auflösung bewahren2.

// Tap to Rotate using dynamicAspectRatio
let discovery = AVCaptureDevice.DiscoverySession(
    deviceTypes: [.builtInUltraWideCamera],
    mediaType: .video,
    position: .front
)
guard let device = discovery.devices.first else { return }

// Find a format that supports the desired ratio
guard let format = device.formats.first(where: {
    $0.supportedDynamicAspectRatios.contains(.ratio4x3)
}) else { return }

try device.lockForConfiguration()
device.activeFormat = format
let timestamp = device.setDynamicAspectRatio(.ratio4x3)  // returns first-buffer timestamp
device.unlockForConfiguration()

Jedes Format weist seine supportedDynamicAspectRatios aus, und das Setzen des Verhältnisses gibt den Zeitstempel des ersten Buffers zurück, in dem die Änderung wirksam wird2. Der zurückgegebene Zeitstempel ist keine Zierde: Bei der Videoaufnahme ist er die Naht, die es Ihnen erlaubt, einen Clip zu beenden und den nächsten im neuen Seitenverhältnis zu beginnen.

Auto Zoom, Auto Rotate und Sensorkompensation

AVCaptureSmartFramingMonitor (ab iOS 26, von der Kamera bezogen) sitzt auf dynamicAspectRatio auf und treibt Auto Zoom und Auto Rotate an2. Der Monitor gibt regelmäßige Empfehlungen zur Bildausschnittswahl aus der automatischen Gesichts- und Blickerkennung, jede mit einem Seitenverhältnis und einem Zoomfaktor, den die App anwenden oder ignorieren kann; da er auf Fotoaufnahmen abzielt, gibt er nur Empfehlungen, wenn das 4032-Fotoformat aktiv ist2. Standardmäßig empfiehlt er nichts, setzen Sie also enabledFramings (auf alle supportedFramings oder eine gewählte Teilmenge), beobachten Sie dann recommendedFraming per Key-Value-Observing und wenden Sie jede Empfehlung an. Die Reihenfolge ist für einen reibungslosen Übergang entscheidend: Setzen Sie zuerst das Seitenverhältnis, dann den Zoomfaktor2. Der Monitor kann starten, während die Session läuft; das automatische Framing auszuschalten bedeutet, das KVO abzumelden und stopMonitoring aufzurufen2.

Eine Falle für die Korrektheit kommt mit dem neuen Sensor. Frühere iPhone-Frontkameras montierten den Sensor in Landscape Left, sodass ein Hochformat-Selfie in nativer Sensorausrichtung ankam und einen EXIF-Tag trug, der bei der Wiedergabe eine Drehung um 270 Grad verlangte. Der Center-Stage-Sensor ist im Hochformat montiert, sodass Apps, die sich auf die alten Drehwerte verlassen, Fotos seitlich oder auf dem Kopf rendern würden2. AVCapturePhotoOutput handhabt dies standardmäßig durch Sensorausrichtungskompensation: Es dreht HEIC-, JPEG- und unkomprimierte verarbeitete Fotos physisch und aktualisiert die EXIF-Metadaten, sodass die Ausgabe wie zuvor in Landscape Left landet und die bestehende Drehlogik weiterhin funktioniert2. Zwei Vorbehalte: Die Kompensation gilt nie für Bayer RAW oder Apple ProRAW, und Apple empfiehlt, mit ausgeschalteter Kompensation (über cameraSensorOrientationCompensationEnabled) für beste Leistung zu testen und zu bestätigen, dass die Ausrichtung korrekt bleibt2.

Center Stage für Video und Anrufe

Für die Videoaufnahme funktioniert dynamicAspectRatio genauso, aber QuickTime-Movie-Tracks erfordern, dass alle Samples dieselben Abmessungen haben, sodass das Ändern des Verhältnisses während der Aufnahme die Aufzeichnung stoppt2. Mit AVCaptureMovieFileOutput stoppt die Aufnahme bei der Änderung automatisch; mit AVCaptureVideoDataOutput plus AVAssetWriter ist der Abschlusszeitstempel von setDynamicAspectRatio der Schnittpunkt, um eine Aufnahme zu beenden und eine andere im neuen Verhältnis zu beginnen2. Aufnahmen gewinnen auf dieser Kamera außerdem zwei gesichtsbewusste cinematische Stabilisierungsmodi, cinematicExtended und cinematicExtendedEnhanced, die es priorisieren, das Motiv stabil zu halten, gegenüber dem Hintergrund2.

Videoanrufe haben den einfachsten Weg. Center Stage ist für Konferenz-Apps, die den Voice-over-IP-Hintergrundmodus verwenden, bereits aktiv und wird vom Benutzer über das Menü „Videoeffekte” des Kontrollzentrums umgeschaltet2. Apps ohne diesen Hintergrundmodus übernehmen die Center-Stage-API direkt: Sie wird pro Prozess aktiviert (wie Porträt, Studiolicht und Gesten), setzen Sie also einen Steuerungsmodus (cooperative, um eine In-App-Schaltfläche zu erlauben, oder app), setzen Sie dann isCenterStageEnabled auf true, und das Framing hält alle zentriert2. Eine weitere Verbesserung für Videoanrufe wird standardmäßig deaktiviert ausgeliefert: ein Echtzeit-Stabilisierungsmodus mit geringer Latenz, aktiviert durch Setzen des preferredVideoStabilizationMode der Verbindung auf lowLatency2.

Leitfaden zur Übernahme

Die drei Sessions belohnen eine schichtweise Übernahme.

Für jede AVFoundation-Kamera-App: Übernehmen Sie zuerst Deferred Start. Wenn Sie die Vorschau mit AVCaptureVideoPreviewLayer rendern und gegen das iOS-26+-SDK neu kompilieren, ist der automatische Modus kostenlos aktiviert; verifizieren Sie ihn, indem Sie bestätigen, dass automaticallyRunsDeferredStart true ist und jede Nicht-Vorschau-Ausgabe isDeferredStartEnabled = true hat1. Kombinieren Sie ihn mit isResponsiveCaptureEnabled auf der Foto-Ausgabe, damit eine schnelle Vorschau auch ein nutzbarer Auslöser ist1.

Für Data-Output- und Metal-Pipelines: Sie verzichten auf den kostenlosen Gewinn. Übernehmen Sie den manuellen Deferred Start, lösen Sie runDeferredStartWhenNeeded() aus, nachdem der erste Frame dargestellt wurde, und halten Sie die Arbeit pro Frame kurz1. Verdrahten Sie die Beobachtung von systemPressureState, damit sich die Pipeline auf einem heißen Gerät anmutig abbaut1.

Für ProRes und Video mit hoher Datenrate: Übernehmen Sie Pro Video Storage auf iOS 27, um durchgehende Schreibvorgänge deterministisch zu machen, mit isProVideoStorageSupported und der Busy-Prüfung vor der Aufnahme als Türsteher1.

Für Frontkamera- und Selfie-Apps auf iPhone 17 / Air / 17 Pro: Entdecken Sie die vordere .builtInUltraWideCamera, stellen Sie Tap to Rotate über dynamicAspectRatio bereit und legen Sie AVCaptureSmartFramingMonitor für Auto Zoom und Auto Rotate darüber. Lassen Sie die Sensorausrichtungskompensation eingeschaltet, sofern Sie keinen Grund gemessen haben, sie auszuschalten, und denken Sie daran, dass sie nie RAW berührt2.

FAQ

Wie viel schneller macht Deferred Start den Start tatsächlich?

Apple maß auf einem Lichtbrett im Labor rund das Zweifache an Tempo: Ein Start, der nahezu eine Sekunde dauerte, sank mit aktiviertem Deferred Start auf etwa die Hälfte, und komplexe Capture-Sessions können sich noch stärker verbessern1. Der Gewinn kommt daher, dass nur die Vorschauausgabe vor dem ersten Frame initialisiert wird und jede andere Ausgabe aufgeschoben wird, bis die Vorschau erscheint1.

Bekomme ich Deferred Start automatisch?

Wenn Ihre App die Vorschau mit AVCaptureVideoPreviewLayer rendert und gegen das SDK von iOS 26 oder höher neu kompiliert, ja: Der automatische Modus ist aktiviert, und automaticallyRunsDeferredStart ist standardmäßig true1. Apps, die die Vorschau mit AVCaptureVideoDataOutput rendern, bekommen ihn nicht automatisch und müssen den manuellen Deferred Start übernehmen, um denselben Startgewinn zu erzielen1.

Warum ist mein erstes Foto selbst mit Deferred Start noch langsam?

Das Aufschieben der Foto-Ausgabe beschleunigt die Vorschau, aber nicht die erste Aufnahme, weil das System die aufgeschobene Foto-Ausgabe immer noch fertig initialisiert, bevor eine Aufnahme beginnen kann1. Setzen Sie isResponsiveCaptureEnabled auf AVCapturePhotoOutput, um die Aufnahme zu puffern, sodass der Moment festgehalten wird, noch bevor die Foto-Ausgabe vollständig bereit ist1.

Wie finde ich die Center-Stage-Frontkamera im Code?

Verwenden Sie eine AVCaptureDevice.DiscoverySession, die den Gerätetyp .builtInUltraWideCamera an der Position .front anfordert; die Center-Stage-Frontkamera wird als dieses vordere Ultraweitwinkelgerät auf iPhone 17, iPhone Air und iPhone 17 Pro bereitgestellt2. Von dort aus setzen Sie dynamicAspectRatio, um jedes unterstützte Seitenverhältnis aus dem quadratischen Sensor herauszuschneiden, ohne die Session neu aufzubauen2.

Bricht die alte Frontkamera-Drehlogik auf dem neuen Sensor?

Sie kann es, weil der Center-Stage-Sensor im Hochformat statt im historischen Landscape Left montiert ist, sodass unkompensierte Buffer seitlich oder auf dem Kopf erscheinen würden2. AVCapturePhotoOutput wendet die Sensorausrichtungskompensation standardmäßig für HEIC, JPEG und unkomprimierte verarbeitete Fotos an (nie RAW), sodass bestehende Drehwerte weiterhin funktionieren, sofern Sie cameraSensorOrientationCompensationEnabled nicht deaktivieren2.

Der Apple-Ecosystem-Cluster

Dieser Beitrag liegt im Bereich Kamera und Aufnahme: der Workflow zu AVFoundation HDR und Apple Log für Profi-Videoaufnahme und -anzeige; die drei Oberflächen einer iOS-App dafür, wo die Aufnahme in die App-Architektur passt; woraus SwiftUI besteht für die UI-Schicht, die die Vorschau beherbergt; und die Apple-Plattform-Matrix dafür, welche Funktionen wo landen. Der Knotenpunkt ist die Apple-Ecosystem-Serie. Für Kontext zu iOS mit KI-Agenten siehe den Leitfaden zur iOS-Agentenentwicklung.

Quellen


  1. Apple, „Build a responsive camera app that launches quickly”, WWDC26 Session 303. Präsentiert von Jake aus Apples Team für Kameraleistung. Behandelt die vierstufige Startsequenz, die Deferred-Start-API (automatischer und manueller Modus, isDeferredStartEnabled, automaticallyRunsDeferredStart, runDeferredStartWhenNeeded() sowie die Callbacks sessionWillRunDeferredStart / sessionDidRunDeferredStart), isResponsiveCaptureEnabled, das Rendern der Vorschau über AVCaptureVideoPreviewLayer versus AVCaptureVideoDataOutput, die Hardware-Kosten- und Systemdruck-APIs sowie Pro Video Storage (usesProVideoStorage, isProVideoStorageSupported, remainingCapacity), neu in iOS 27. 

  2. Apple, „Support the Center Stage front camera in your iOS app”, WWDC26 Session 341. Präsentiert von Tracy aus Apples Camera-Software-Team. Behandelt den quadratischen Center-Stage-Frontkamerasensor auf iPhone 17, iPhone Air und iPhone 17 Pro, der als vordere .builtInUltraWideCamera angesprochen wird; dynamicAspectRatio und supportedDynamicAspectRatios; AVCaptureSmartFramingMonitor (enabledFramings, supportedFramings, recommendedFraming, stopMonitoring) für Auto Zoom und Auto Rotate; die Sensorausrichtungskompensation (cameraSensorOrientationCompensationEnabled); die cinematischen Stabilisierungsmodi; und die Center-Stage-Videoanruf-API (isCenterStageEnabled, Steuerungsmodi) plus lowLatency-Videostabilisierung. 

  3. Apple-Entwicklerdokumentation: AVFoundation. Die Framework-Referenz, die die Capture-, Bearbeitungs- und Wiedergabe-APIs abdeckt (AVCaptureSession, AVCaptureDevice, AVCaptureDeviceInput, AVCaptureVideoPreviewLayer, AVCapturePhotoOutput, AVCaptureMovieFileOutput, AVCaptureVideoDataOutput, AVAssetWriter und AVCaptureConnection), auf die in beiden Sessions durchgehend verwiesen wird. 

  4. Apple, „Implement high resolution photo capture”, WWDC26 Session 304. Präsentiert von Mohit aus Apples Camera-Software-Team. Quelle für das Verhalten der schnellen Aufnahmepriorisierung (das System erkennt schnelle Aufnahmen und passt die Qualität auf ausgewogen an), die iOS-27-Deferred-Verarbeitung ausgewogener schneller Aufnahmen auf iPhone 16 und iPhone 17, die Basketball-Demo (eine blockierte Aufnahme gegenüber fünf reaktionsschnellen Aufnahmen), die 24-MP-/48-MP-Erweiterung auf die Telefotokamera des iPhone 16 Pro und die Ultraweitwinkelkamera des iPhone 17, das 18-MP-Format der Center-Stage-Frontkamera und die Priorisierungsstufen-Anforderungen pro Auflösung. Der Eigenschaftsname isFastCapturePrioritizationEnabled (iOS 17.0+) wurde gegen Apples AVCapturePhotoOutput-Dokumentation verifiziert. 

  5. Apple, „Camera and Photo Technologies Group Lab”, WWDC26 Lab 8018. Quelle für die Batching-Regel der Session-Neukonfiguration (die Capture-Session löst ihren Objektgraphen bei störenden Eigenschaftsänderungen neu auf, und die Banktransaktions-Analogie für beginConfiguration() / commitConfiguration()) sowie für die Bestätigung, dass Deferred Start und das vorbereitete Photo-Settings-Array orthogonal und komplementär sind. Paraphrasiert aus einer lokal transkribierten Aufzeichnung des WWDC-2026-Camera-and-Photo-Technologies-Group-Lab; Apple veröffentlicht keine Untertitel für die Labs. Die Symbole beginConfiguration() und commitConfiguration() auf AVCaptureSession sowie setPreparedPhotoSettingsArray(_:completionHandler:) auf AVCapturePhotoOutput wurden gegen Apples AVCaptureSession-Dokumentation und AVCapturePhotoOutput-Dokumentation verifiziert. 

Verwandte Beiträge

Foundation Models Bildeingabe in iOS 27

iOS 27 verleiht dem geräteinternen Foundation-Models-LLM Vision: Sie übergeben ein UIImage, CGImage oder einen Pixel-Buf…

10 Min. Lesezeit

SwiftData in iOS 27: Observation und History

iOS 27 verleiht SwiftData erstklassige Beobachtung von Änderungen mit ResultsObserver, Beobachtung der Persistent Histor…

11 Min. Lesezeit

The Robots Are Taking Exams in My Search Console

First-party GSC data: 91% of 3.8M impressions fail a human-query filter. Exam questions, pasted errors, and agent sweeps…

10 Min. Lesezeit