AVFoundation HDR et Apple Log : flux de travail vidéo professionnels sur iPhone
L’iPhone 15 Pro et les modèles ultérieurs enregistrent en Apple Log aux côtés des codecs standard HEVC et Apple ProRes, et AVFoundation expose la pile vidéo professionnelle complète à travers AVCaptureDevice et AVCaptureSession pour les applications qui souhaitent y participer1. Le volet HDR du même framework prend en charge HLG, HDR10 et Dolby Vision via AVPlayer.HDRMode, ainsi que l’affichage vidéo en EDR via AVKit. Les deux composants (capture et affichage) se connectent grâce au choix du codec, aux métadonnées d’espace colorimétrique et au transfert vers les applications de gradation en post-production.
Cet article parcourt la surface AVFoundation pour la vidéo professionnelle en regard de la documentation d’Apple. Le cadrage est « ce qu’une application doit exposer pour les cinéastes, les monteurs vidéo et les applications soucieuses du HDR », car les fonctionnalités vidéo professionnelles du framework sont documentées mais pas mises en avant ; la plupart des applications qui pourraient en bénéficier ne les exposent pas.
TL;DR
- AVFoundation prend en charge trois formats de livraison HDR : HLG (Hybrid Log-Gamma), HDR10 et Dolby Vision. iOS 26 a introduit le booléen
AVPlayer.eligibleForHDRPlayback, plus simple, comme vérification recommandée ; l’ancienAVPlayer.HDRMode(une structureOptionSetavec.hlg,.hdr10,.dolbyVision) et la propriétéavailableHDRModesau niveau de la classe sont dépréciés mais restent résolvables2. AVCaptureDevice.isVideoHDREnabledindique si l’appareil diffuse des tampons HDR ; définirvideoHDREnabled(après avoir désactivéautomaticallyAdjustsVideoHDREnabled) le force pour les formats compatibles.- Apple Log relève du domaine des iPhone 15 Pro+ et iPhone 16 Pro+ : un profil colorimétrique plat et désaturé pour la gradation en post-production. Les applications le capturent via la sélection du format actif d’
AVCaptureDevicesur les appareils prenant en charge l’espace colorimétrique Apple Log, encodé en HEVC (10 bits) ou Apple ProRes3. - Apple fournit des LUT officielles Apple Log → Rec.709 et Apple Log → Rec.2020 via le site développeur ; les applications qui gèrent le transfert en post-production incluent la LUT ou indiquent où la trouver4.
- AVKit affiche le contenu HDR en EDR (Extended Dynamic Range) sur les appareils compatibles ; les appareils SDR reçoivent automatiquement une sortie tonemappée. Les applications utilisant
AVPlayerViewControllerouVideoPlayerobtiennent le bon comportement sans branchement par affichage.
Les trois formats HDR
AVFoundation prend en charge trois formats HDR. L’ancienne façon de les énumérer reposait sur la structure OptionSet AVPlayer.HDRMode (cas .hlg, .hdr10, .dolbyVision) ainsi que sur la propriété AVPlayer.availableHDRModes au niveau de la classe ; iOS 26 déprécie les deux au profit du booléen plus simple, au niveau de l’instance, AVPlayer.eligibleForHDRPlayback2.
HLG (Hybrid Log-Gamma). Le standard de diffusion, conçu pour être rétrocompatible avec les écrans SDR qui interprètent correctement le signal. Le contenu HLG peut être lu sur un téléviseur SDR sans ombres écrasées ni hautes lumières brûlées ; le même signal s’affiche en mieux sur un écran HDR. Les applications qui ont besoin de la plus large compatibilité avec les appareils choisissent HLG par défaut.
HDR10. Le standard TV / streaming. Métadonnées statiques (luminosité maximale, volume colorimétrique) intégrées au flux ; moins de détails que Dolby Vision mais plus universel. La plupart des services de streaming qui marquent leur contenu comme « HDR » utilisent HDR10 ou Dolby Vision.
Dolby Vision. Métadonnées HDR image par image, généralement l’expérience HDR de plus haute qualité. Nécessite une chaîne d’affichage compatible Dolby Vision (décodeur, écran) pour profiter de tous les avantages ; effectue un tonemapping élégant sur les écrans de gamme inférieure.
Pour le code moderne, AVPlayer.eligibleForHDRPlayback indique si l’élément actuel se lit en HDR sur l’appareil. Les applications qui ont besoin d’une introspection explicite du format (chemins de code hérités, interface utilisateur spécifique au format) peuvent toujours interroger AVPlayer.availableHDRModes, mais le nouveau code devrait privilégier le booléen plus simple.
Capture vidéo HDR via AVCaptureDevice
Côté capture, le HDR utilise les propriétés d’AVCaptureDevice. Les deux points de contrôle sont le format et la bascule HDR :
import AVFoundation
guard let device = AVCaptureDevice.default(for: .video) else { return }
try device.lockForConfiguration()
device.automaticallyAdjustsVideoHDREnabled = false
device.isVideoHDREnabled = true
device.unlockForConfiguration()
La propriété automaticallyAdjustsVideoHDREnabled vaut true par défaut ; iOS choisit HDR ou SDR par format en fonction des conditions de fonctionnement. Les applications qui veulent un contrôle explicite la définissent à false et basculent directement isVideoHDREnabled. Note : la propriété est observable ; lire isVideoHDREnabled reflète l’état actuel, qui peut différer d’un réglage manuel si le format ne prend pas en charge le HDR.
AVCaptureDevice.activeFormat expose la prise en charge HDR du format via isVideoHDRSupported ; tous les formats d’un appareil ne prennent pas en charge le HDR. Le schéma pour les applications compatibles HDR consiste à énumérer les formats de l’appareil, à trouver ceux dont isVideoHDRSupported == true à la résolution et à la fréquence d’images souhaitées, puis à définir explicitement le format actif avant d’activer le HDR.
Apple Log : le flux colorimétrique professionnel
Apple Log est un profil colorimétrique plat disponible sur l’iPhone 15 Pro / Pro Max / iPhone 16 Pro / Pro Max et ultérieurs. Le profil enregistre la vidéo avec une courbe gamma logarithmique et un tonemapping minimal en caméra ; l’image semble délavée à la sortie de la caméra mais préserve la dynamique maximale pour la gradation en post-production3.
Le chemin de capture :
1. Sélectionnez un AVCaptureDevice.Format qui prend en charge Apple Log. Le format l’expose via sa liste supportedColorSpaces, qui inclut .appleLog sur les appareils compatibles.
2. Définissez l’activeColorSpace de l’appareil sur .appleLog après verrouillage pour configuration.
3. Configurez le codec d’enregistrement (HEVC pour le chemin interne à l’iPhone, Apple ProRes pour le chemin à plus haute bande passante).
4. Enregistrez. La vidéo capturée porte les métadonnées colorimétriques Apple Log.
Le transfert en post-production est la proposition de valeur : Apple Log donne au monteur une flexibilité maximale pour étalonner indépendamment les hautes lumières et les ombres, tirer la couleur dans des directions que la caméra ne pouvait pas atteindre, et harmoniser les rushes provenant d’autres caméras compatibles Log.
Pour les applications qui manipulent des rushes Apple Log (monteurs vidéo, utilitaires d’étalonnage, outils de gestion d’actifs), le framework expose les métadonnées colorimétriques via les propriétés de piste de l’asset ; l’application lit AVAssetTrack.formatDescriptions et inspecte la kCVImageBufferTransferFunctionKey pour confirmer le contenu Apple Log.
Encodage : HEVC, ProRes, ProRes Log
Trois chemins de codec comptent pour la vidéo HDR / Apple Log :
HEVC (H.265). Le codec grand public par défaut. HEVC 10 bits prend en charge le HDR (HLG, HDR10, métadonnées Dolby Vision). Les plus petites tailles de fichiers parmi les codecs compatibles HDR. L’iPhone enregistre la plupart des vidéos HDR grand public via HEVC.
Apple ProRes. Le codec professionnel. Tailles de fichiers plus importantes (10 à 50× HEVC à qualité équivalente) mais compression intra-image sans perte qui s’étalonne proprement. L’iPhone 15 Pro+ enregistre en ProRes soit en stockage interne (4K30 max, durée soutenue limitée), soit sur un SSD USB-C externe (4K60 soutenu, durées plus longues).
Apple ProRes Log. ProRes encodé avec le profil colorimétrique Apple Log. La voie « cinéaste professionnel » : flexibilité maximale d’étalonnage, fichiers les plus volumineux, nécessite un SSD externe pour la capture 4K60 soutenue. La cible du transfert est DaVinci Resolve, Final Cut ou un autre NLE compatible étalonnage.
Le choix du codec est exposé via les paramètres de sortie d’AVCaptureMovieFileOutput. Les applications qui gèrent le flux d’enregistrement définissent le dictionnaire de format de sortie avec la clé AVVideoCodecKey réglée sur l’une des valeurs .hevc, .proRes422, .proRes422HQ, .proRes422LT, .proRes422Proxy, .proRes4444, etc. Ce sont les constantes statiques AVVideoCodecType ; à noter, pas de préfixe « apple » sur l’API Swift moderne. L’AVCaptureDevice.Format contraint les codecs que l’appareil peut diffuser ; tous les codecs ne sont pas disponibles à toutes les résolutions.
Transfert pour étalonnage : LUT
Les rushes Apple Log paraissent délavés. Le flux d’étalonnage applique une LUT (Look-Up Table) pour mapper l’espace colorimétrique Apple Log dans la cible de livraison (Rec.709 pour SDR, Rec.2020 pour HDR). Apple fournit des LUT officielles via le hub de documentation de support Final Cut Pro / Pro Apps4 :
- Apple Log vers Rec.709. Livraison SDR. L’espace colorimétrique standard pour la vidéo YouTube / web.
- Apple Log vers Rec.2020 HLG. Livraison HDR via HLG. Diffusion / HDR général.
- Apple Log vers Rec.2020 HDR10. Livraison HDR via HDR10. HDR en streaming.
Les applications qui manipulent des rushes Apple Log : 1. Soit intègrent directement la LUT et l’appliquent à l’importation (Final Cut, DaVinci Resolve, Photoshop avec le plug-in LUT) 2. Soit documentent le chemin d’accès à la LUT pour que les monteurs puissent l’appliquer manuellement
Pour les développeurs d’applications construisant un outil compatible Apple Log, le bon schéma est l’option 1 : intégrer la LUT, l’appliquer à l’importation, et laisser les utilisateurs exporter via le format de livraison standard. Les LUT fournies par Apple sont libres de redistribution selon la licence des outils développeur Apple.
Affichage : EDR via AVKit
Le côté affichage est largement automatique. L’AVPlayerViewController d’AVKit (UIKit) et le VideoPlayer de SwiftUI rendent tous deux le contenu HDR en EDR (Extended Dynamic Range) sur les écrans compatibles :
- Écrans OLED iPhone (iPhone X et ultérieurs, modèles Pro avec ProMotion).
- Écrans iPad Pro mini-LED.
- Écrans Mac XDR.
- Écrans externes compatibles HDR via AirPlay.
Pour les écrans SDR uniquement, le système effectue automatiquement un tonemapping du contenu HDR. Les applications n’ont pas à brancher selon la capacité de l’écran pour le chemin de lecture ; le système s’en charge.
Les applications avec des pipelines vidéo personnalisés (lecteurs basés sur Metal, AVSampleBufferDisplayLayer avec traitement personnalisé) doivent opter explicitement pour l’EDR via CAMetalLayer.wantsExtendedDynamicRangeContent ou la propriété de couche équivalente. Le défaut pour les couches Metal personnalisées est SDR ; la prise en charge HDR exige l’opt-in explicite plus un format de pixel correspondant qui prend en charge les valeurs de composante > 1,0 (typiquement bgr10a2Unorm ou un format flottant compatible HDR).
Échecs courants
Trois schémas tirés des journaux d’échecs AVFoundation HDR / Apple Log :
Capture en HDR mais enregistrement vers un codec qui ne le prend pas en charge. Définir isVideoHDREnabled = true sur une session qui enregistre en HEVC 8 bits produit une sortie SDR silencieuse. Le signal HDR est capturé mais l’encodage le supprime. Correction : associez la capture HDR à un codec 10 bits (HEVC 10 bits, ProRes ou ProRes Log).
Capture Apple Log sans LUT dans le pipeline de livraison. La vidéo Apple Log paraît délavée par conception ; les spectateurs voyant des rushes Apple Log non étalonnés supposent que la caméra ou l’application est cassée. Correction : soit appliquez la LUT Apple Log → Rec.709 avant l’affichage dans l’application, soit présentez les rushes à l’utilisateur comme « log » avec un étiquetage clair pour qu’il comprenne l’exigence de post-traitement.
Affichage HDR via wantsExtendedDynamicRangeContent sans bgr10a2Unorm (ou format de pixel HDR flottant). Une couche Metal avec EDR activé mais rendue dans un format de pixel 8 bits par canal produit des hautes lumières écrêtées. Correction : associez l’opt-in EDR au bon format de pixel (norme non signée 10 bits ou flottant 16 bits).
Ce que ce schéma signifie pour les applications iOS 26+
Trois enseignements.
-
Par défaut, optez pour HEVC pour les applications généralistes ; ne réservez ProRes que lorsque le flux professionnel le justifie. Une application vidéo grand public capturant en HDR via HEVC 10 bits délivre du HDR complet avec des tailles de fichiers raisonnables. ProRes est destiné aux cinéastes et monteurs qui ont besoin de la flexibilité d’étalonnage sans perte ; le coût en taille de fichier est réel.
-
Apple Log relève du domaine de l’iPhone 15 Pro+ ; documentez l’exigence d’appareil. Les applications qui promettent la capture en Apple Log doivent vérifier
AVCaptureDevice.Format.supportedColorSpacespour.appleLogà l’exécution et se dégrader élégamment sur les appareils non compatibles. La vérification de format est par appareil, pas par version d’iOS. -
Intégrez la LUT ou documentez le flux pour les rushes Apple Log. Les applications qui manipulent de la vidéo Apple Log ont besoin d’un chemin allant du Log brut à la livraison étalonnée. Soit intégrez la LUT et appliquez-la à l’importation, soit présentez la LUT fournie par Apple aux utilisateurs avec une documentation claire sur la façon de l’appliquer dans leur NLE de choix.
Le cluster Apple Ecosystem complet : App Intents typés ; serveurs MCP ; la question du routage ; Foundation Models ; la distinction LLM runtime vs outillage ; trois surfaces ; le schéma de source unique de vérité ; Two MCP Servers ; hooks pour le développement Apple ; Live Activities ; le contrat d’exécution watchOS ; les internes de SwiftUI ; le modèle mental spatial de RealityKit ; la discipline de schéma SwiftData ; les schémas Liquid Glass ; la livraison multi-plateforme ; la matrice de plateformes ; le framework Vision ; Symbol Effects ; l’inférence Core ML ; l’API Writing Tools ; Swift Testing ; Privacy Manifest ; l’accessibilité comme plateforme ; la typographie SF Pro ; les schémas spatiaux visionOS ; le framework Speech ; les migrations SwiftData ; le focus engine tvOS ; les internes de @Observable ; le protocole Layout SwiftUI ; les SF Symbols personnalisés ; ce sur quoi je refuse d’écrire. Le hub se trouve sur la série Apple Ecosystem. Pour un contexte plus large iOS-avec-agents-IA, consultez le guide iOS Agent Development.
FAQ
Ai-je besoin d’un iPhone 15 Pro pour enregistrer de la vidéo HDR dans mon application ?
Non. La vidéo HDR (HLG, HDR10) est prise en charge sur l’iPhone 12 Pro et ultérieurs via HEVC 10 bits. L’iPhone 15 Pro et ultérieurs ajoutent spécifiquement Apple Log ; le pipeline HDR plus large fonctionne sur davantage d’appareils.
Quelle est la différence entre Apple Log et Dolby Vision ?
Apple Log est un profil colorimétrique de capture (conçu pour la gradation). Dolby Vision est un format de livraison HDR (conçu pour la lecture). Ils occupent des étapes différentes du pipeline. Les rushes Apple Log sont étalonnés et exportés vers un format de livraison ; Dolby Vision est l’une des options de livraison.
Comment détecter la prise en charge d’Apple Log à l’exécution ?
Énumérez AVCaptureDevice.formats, puis pour chaque format vérifiez supportedColorSpaces. La prise en charge d’Apple Log apparaît comme .appleLog dans cette liste. Les applications qui souhaitent exposer la capture Apple Log uniquement sur les appareils compatibles s’appuient sur cette vérification plutôt que d’analyser les identifiants de modèle d’iPhone.
Quelle est la différence de taille de fichier entre HEVC HDR et ProRes Log ?
Environ 10 à 50× par minute, selon le débit binaire et la résolution. HEVC HDR 4K30 fait environ 50-100 Mo/min ; ProRes 422 HQ 4K30 fait environ 1,5-2,5 Go/min. Les fichiers ProRes Log nécessitent un SSD USB-C externe pour la capture 4K60 soutenue ; le stockage interne de l’iPhone est limité en débit pour l’écriture ProRes soutenue.
Puis-je afficher des rushes Apple Log sans LUT ?
Vous pouvez afficher la vidéo brute, mais elle apparaîtra délavée et désaturée. Le profil colorimétrique Apple Log est destiné à la gradation, pas à la visualisation directe. Les applications qui doivent présenter des rushes Apple Log bruts aux utilisateurs devraient les étiqueter comme « log » pour que ceux-ci comprennent l’exigence de post-traitement ; sinon, appliquez la LUT Apple Log → Rec.709 pour l’affichage.
AVFoundation gère-t-il automatiquement le tonemapping HDR-vers-SDR ?
Oui pour les lecteurs standard d’AVKit (AVPlayerViewController, VideoPlayer de SwiftUI). Les pipelines vidéo Metal personnalisés doivent opter explicitement pour l’EDR et sélectionner un format de pixel compatible HDR ; sans cela, le contenu HDR s’affiche en SDR écrêté.
Références
-
Documentation développeur Apple : AVFoundation. La référence du framework couvrant les APIs de capture, d’édition et de lecture sur iOS, iPadOS, macOS, tvOS, watchOS et visionOS. ↩
-
Documentation développeur Apple :
AVPlayer.HDRMode. Les trois cas HDR (.hlg,.hdr10,.dolbyVision) et la requêteavailableHDRModespour ce qu’une instance d’AVPlayerprend en charge pour l’élément actuel. ↩↩ -
Documentation développeur Apple :
AVCaptureDeviceetAVCaptureDevice.Format. Les propriétés de format de l’appareil de capture, dontsupportedColorSpacespour la détection d’Apple Log etisVideoHDRSupportedpour la faisabilité HDR. ↩↩ -
Apple Pro Apps Support : Support et téléchargements Apple Pro Apps. Le hub Pro Apps qui renvoie aux ressources du profil Apple Log et aux LUT téléchargeables pour convertir les rushes Apple Log vers les espaces colorimétriques de livraison standard ; les LUT sont fournies avec Final Cut Pro et Logic Pro et également en téléchargement autonome. ↩↩