HDR de AVFoundation y Apple Log: flujos de trabajo de video profesional en iPhone
El iPhone 15 Pro y posteriores graban en Apple Log junto con los códecs estándar HEVC y Apple ProRes, y AVFoundation expone toda la pila de video profesional a través de AVCaptureDevice y AVCaptureSession para las apps que quieran participar1. El lado HDR del mismo framework admite HLG, HDR10 y Dolby Vision a través de AVPlayer.HDRMode, además de la visualización de video como EDR mediante AVKit. Las dos piezas (captura y visualización) se conectan mediante la elección del códec, los metadatos del espacio de color y el traspaso a las apps de gradación en postproducción.
Este artículo recorre la superficie de AVFoundation para video profesional contrastándola con la documentación de Apple. El enfoque es “qué necesita exponer una app para cineastas, editores de video y apps conscientes del HDR”, porque las funciones de video profesional del framework están documentadas pero no promocionadas; la mayoría de las apps que podrían beneficiarse no las exponen.
TL;DR
- AVFoundation admite tres formatos de entrega HDR: HLG (Hybrid Log-Gamma), HDR10 y Dolby Vision. iOS 26 introdujo el booleano más simple
AVPlayer.eligibleForHDRPlaybackcomo la verificación recomendada; el legadoAVPlayer.HDRMode(una estructuraOptionSetcon.hlg,.hdr10,.dolbyVision) y la propiedad a nivel de claseavailableHDRModesestán en desuso pero todavía son accesibles2. AVCaptureDevice.isVideoHDREnabledindica si el dispositivo está transmitiendo búferes HDR; al asignarvideoHDREnabled(después de desactivarautomaticallyAdjustsVideoHDREnabled) se fuerza su activación para los formatos compatibles.- Apple Log es territorio del iPhone 15 Pro+ y el iPhone 16 Pro+: un perfil de color plano y desaturado para gradar en postproducción. Las apps lo capturan a través de la selección del formato activo de
AVCaptureDeviceen dispositivos que admitan el espacio de color Apple Log, codificándolo como HEVC (10 bits) o Apple ProRes3. - Apple distribuye LUTs oficiales de Apple Log → Rec.709 y Apple Log → Rec.2020 a través del sitio para desarrolladores; las apps que gestionan el traspaso a postproducción incluyen el LUT o documentan dónde encontrarlo4.
- AVKit muestra el contenido HDR como EDR (Extended Dynamic Range) en los dispositivos compatibles; los dispositivos SDR reciben automáticamente una salida con mapeo tonal. Las apps que utilizan
AVPlayerViewControlleroVideoPlayerobtienen el comportamiento correcto sin tener que ramificar por tipo de pantalla.
Los tres formatos HDR
AVFoundation admite tres formatos HDR. La forma tradicional de enumerarlos era la estructura OptionSet AVPlayer.HDRMode (casos .hlg, .hdr10, .dolbyVision) junto con la propiedad a nivel de clase AVPlayer.availableHDRModes; iOS 26 deja en desuso ambas en favor del booleano más simple a nivel de instancia AVPlayer.eligibleForHDRPlayback2.
HLG (Hybrid Log-Gamma). El estándar de transmisión, diseñado para ser retrocompatible con pantallas SDR que interpretan correctamente la señal. El contenido HLG puede reproducirse en una TV SDR sin sombras aplastadas ni altas luces quemadas; la misma señal se ve mejor en una pantalla HDR. Las apps que necesitan la mayor compatibilidad de dispositivos usan HLG por defecto.
HDR10. El estándar para TV y streaming. Metadatos estáticos (brillo máximo, volumen de color) embebidos en la transmisión; menos detalle que Dolby Vision pero más universal. La mayoría de los servicios de streaming que marcan contenido como “HDR” usan HDR10 o Dolby Vision.
Dolby Vision. Metadatos HDR fotograma a fotograma, normalmente la experiencia HDR de mayor calidad. Requiere una cadena de pantalla compatible con Dolby Vision (decodificador, pantalla) para aprovecharlo al máximo; hace mapeo tonal con elegancia en pantallas de gama inferior.
Para código moderno, AVPlayer.eligibleForHDRPlayback indica si el ítem actual se reproduce en HDR en el dispositivo. Las apps que necesiten introspección explícita del formato (rutas de código heredadas, interfaces específicas de cada formato) todavía pueden consultar AVPlayer.availableHDRModes, pero el código nuevo debería recurrir al booleano más simple.
Captura de video HDR a través de AVCaptureDevice
El HDR del lado de la captura usa propiedades de AVCaptureDevice. Los dos puntos de control son el formato y el interruptor de HDR:
import AVFoundation
guard let device = AVCaptureDevice.default(for: .video) else { return }
try device.lockForConfiguration()
device.automaticallyAdjustsVideoHDREnabled = false
device.isVideoHDREnabled = true
device.unlockForConfiguration()
La propiedad automaticallyAdjustsVideoHDREnabled está en true por defecto; iOS elige HDR o SDR por formato según las condiciones operativas. Las apps que quieran un control explícito la ponen en false y manipulan isVideoHDREnabled directamente. Nota: la propiedad es observable; leer isVideoHDREnabled refleja el estado actual, que puede diferir de un ajuste manual si el formato no admite HDR.
AVCaptureDevice.activeFormat expone el soporte HDR del formato a través de isVideoHDRSupported; no todos los formatos en un dispositivo admiten HDR. El patrón para apps con HDR es enumerar los formats del dispositivo, encontrar aquellos con isVideoHDRSupported == true en la resolución y la velocidad de fotogramas deseadas, y establecer el formato activo explícitamente antes de habilitar HDR.
Apple Log: el flujo de trabajo de color profesional
Apple Log es un perfil de color plano disponible en el iPhone 15 Pro / Pro Max / iPhone 16 Pro / Pro Max y posteriores. El perfil graba video con una curva gamma logarítmica y un mapeo tonal mínimo en cámara; la imagen se ve deslavada directamente desde la cámara pero conserva el rango dinámico máximo para gradar en postproducción3.
La ruta de captura:
1. Selecciona un AVCaptureDevice.Format que admita Apple Log. El formato lo expone a través de su lista supportedColorSpaces, que incluye .appleLog en los dispositivos compatibles.
2. Configura activeColorSpace del dispositivo en .appleLog después de bloquear para configuración.
3. Configura el códec de grabación (HEVC para la ruta interna del iPhone, Apple ProRes para la ruta de mayor ancho de banda).
4. Graba. El video capturado lleva los metadatos de color de Apple Log.
El traspaso a postproducción es la propuesta de valor: Apple Log le da al editor la máxima flexibilidad para gradar altas luces y sombras de forma independiente, llevar el color en direcciones que la cámara no podía capturar y emparejar metraje de otras cámaras compatibles con Log.
Para las apps que manejan metraje de Apple Log (editores de video, utilidades de gradación de color, herramientas de gestión de assets), el framework expone los metadatos de color a través de las propiedades de la pista del asset; la app lee AVAssetTrack.formatDescriptions e inspecciona kCVImageBufferTransferFunctionKey para confirmar que el contenido es Apple Log.
Codificación: HEVC, ProRes, ProRes Log
Tres rutas de códec son relevantes para el video HDR / Apple Log:
HEVC (H.265). El códec de consumo por defecto. HEVC de 10 bits admite HDR (metadatos HLG, HDR10, Dolby Vision). Los tamaños de archivo más pequeños entre los códecs compatibles con HDR. El iPhone graba la mayoría del video HDR de consumo a través de HEVC.
Apple ProRes. El códec profesional. Tamaños de archivo mayores (10-50× HEVC con calidad equivalente) pero con compresión intracuadro sin pérdidas que permite gradar limpiamente. El iPhone 15 Pro+ graba ProRes ya sea al almacenamiento interno (4K30 máximo, sostenido limitado) o a un SSD externo USB-C (4K60 sostenido, duraciones más largas).
Apple ProRes Log. ProRes codificado con el perfil de color Apple Log. La ruta del “cineasta profesional”: máxima flexibilidad para gradar, archivos más grandes, requiere un SSD externo para captura sostenida en 4K60. El destino del traspaso es DaVinci Resolve, Final Cut u otro NLE con capacidad de gradación.
La elección del códec se expone a través de los ajustes de salida de AVCaptureMovieFileOutput. Las apps que manejan el flujo de grabación configuran el diccionario de formato de salida con AVVideoCodecKey puesto en uno de .hevc, .proRes422, .proRes422HQ, .proRes422LT, .proRes422Proxy, .proRes4444, etc. Estas son las constantes estáticas de AVVideoCodecType; nota que no llevan el prefijo “apple” en la API moderna de Swift. El AVCaptureDevice.Format restringe los códecs a los que el dispositivo puede transmitir; no todos los códecs están disponibles en todas las resoluciones.
Traspaso a gradación de color: LUTs
El metraje en Apple Log se ve deslavado. El flujo de gradación aplica un LUT (Look-Up Table) para mapear el espacio de color de Apple Log al objetivo de entrega (Rec.709 para SDR, Rec.2020 para HDR). Apple distribuye LUTs oficiales a través del centro de documentación de soporte de Final Cut Pro / Pro Apps4:
- Apple Log a Rec.709. Entrega SDR. El espacio de color estándar para video web y de YouTube.
- Apple Log a Rec.2020 HLG. Entrega HDR mediante HLG. Transmisión / HDR general.
- Apple Log a Rec.2020 HDR10. Entrega HDR mediante HDR10. HDR de streaming.
Las apps que manejan metraje en Apple Log pueden: 1. Embeber el LUT directamente y aplicarlo al importar (Final Cut, DaVinci Resolve, Photoshop con el plug-in de LUT) 2. Documentar la ruta del LUT para que los editores puedan aplicarlo manualmente
Para los desarrolladores de apps que construyen una herramienta consciente de Apple Log, el patrón correcto es la opción 1: empaquetar el LUT, aplicarlo al importar y dejar que los usuarios exporten al formato de entrega estándar. Los LUTs proporcionados por Apple son de libre redistribución bajo la licencia de las herramientas para desarrolladores de Apple.
Visualización: EDR a través de AVKit
El lado de la visualización es en gran medida automático. Tanto AVPlayerViewController (UIKit) de AVKit como VideoPlayer de SwiftUI renderizan el contenido HDR como EDR (Extended Dynamic Range) en pantallas compatibles:
- Pantallas OLED del iPhone (iPhone X y posteriores, modelos Pro con ProMotion).
- Pantallas mini-LED del iPad Pro.
- Pantallas XDR del Mac.
- Pantallas externas con capacidad HDR a través de AirPlay.
Para pantallas solo SDR, el sistema hace mapeo tonal del contenido HDR automáticamente. Las apps no se ramifican según la capacidad de la pantalla en la ruta de reproducción; el sistema lo gestiona.
Las apps con pipelines de video personalizados (reproductores basados en Metal, AVSampleBufferDisplayLayer con procesamiento personalizado) deben optar explícitamente por EDR mediante CAMetalLayer.wantsExtendedDynamicRangeContent o la propiedad de capa equivalente. El valor por defecto para las capas Metal personalizadas es SDR; el soporte HDR requiere la opción explícita más un formato de píxel correspondiente que admita valores de componente >1.0 (típicamente bgr10a2Unorm o un formato float compatible con HDR).
Fallos comunes
Tres patrones recurrentes de los registros de fallos con HDR / Apple Log de AVFoundation:
Capturar HDR pero grabar a un códec que no lo admite. Asignar isVideoHDREnabled = true en una sesión que graba a HEVC de 8 bits produce una salida SDR silenciosa. La señal HDR se captura pero la codificación la elimina. Solución: emparejar la captura HDR con un códec de 10 bits (HEVC de 10 bits, ProRes o ProRes Log).
Captura en Apple Log sin un LUT en el pipeline de entrega. El video en Apple Log se ve deslavado por diseño; los espectadores que ven metraje en Apple Log sin gradar suponen que la cámara o la app están rotas. Solución: aplicar el LUT de Apple Log → Rec.709 antes de mostrarlo en la app, o presentar el metraje al usuario como “log” con un etiquetado claro para que entienda el requisito de postprocesamiento.
Mostrar HDR a través de wantsExtendedDynamicRangeContent sin bgr10a2Unorm (u otro formato de píxel HDR float). Una capa Metal con EDR activado pero renderizando a un formato de píxel de 8 bits por canal produce altas luces recortadas. Solución: emparejar la opción de EDR con el formato de píxel correcto (norma sin signo de 10 bits o float de 16 bits).
Qué significa este patrón para las apps de iOS 26+
Tres conclusiones.
-
Usa HEVC por defecto para apps generales; recurre a ProRes solo cuando el flujo de trabajo profesional lo justifique. Una app de video de consumo que captura HDR a través de HEVC de 10 bits entrega HDR completo con tamaños de archivo razonables. ProRes es para cineastas y editores que necesitan flexibilidad de gradación sin pérdidas; el costo en tamaño de archivo es real.
-
Apple Log es territorio del iPhone 15 Pro+; documenta el requisito del dispositivo. Las apps que prometen captura en Apple Log deben verificar
AVCaptureDevice.Format.supportedColorSpacespara.appleLogen tiempo de ejecución y degradarse con elegancia en dispositivos que no lo admitan. La verificación del formato es por dispositivo, no por versión de iOS. -
Empaqueta el LUT o documenta el flujo de trabajo para metraje de Apple Log. Las apps que manejan video en Apple Log necesitan una ruta del Log en bruto a la entrega gradada. O bien embeben el LUT y lo aplican al importar, o bien presentan el LUT proporcionado por Apple a los usuarios con documentación clara de cómo aplicarlo en el NLE de su elección.
El cluster completo del Ecosistema Apple: App Intents tipados; servidores MCP; la pregunta de enrutamiento; Foundation Models; la distinción LLM entre runtime y herramientas; tres superficies; el patrón de fuente única de verdad; Dos servidores MCP; hooks para desarrollo en Apple; Live Activities; el contrato de runtime de watchOS; internos de SwiftUI; el modelo mental espacial de RealityKit; disciplina de esquema en SwiftData; patrones de Liquid Glass; envío multiplataforma; la matriz de plataformas; el framework Vision; Symbol Effects; inferencia con Core ML; API de Writing Tools; Swift Testing; Privacy Manifest; Accesibilidad como plataforma; tipografía SF Pro; patrones espaciales de visionOS; framework Speech; migraciones en SwiftData; el motor de focus de tvOS; internos de @Observable; el protocolo Layout de SwiftUI; SF Symbols personalizados; sobre qué me niego a escribir. El hub está en la Serie del Ecosistema Apple. Para un contexto más amplio sobre iOS con agentes de IA, consulta la guía de Desarrollo de Agentes para iOS.
Preguntas frecuentes
¿Necesito un iPhone 15 Pro para grabar video HDR en mi app?
No. El video HDR (HLG, HDR10) es compatible con el iPhone 12 Pro y posteriores a través de HEVC de 10 bits. El iPhone 15 Pro y posteriores añaden Apple Log específicamente; el pipeline HDR más amplio funciona en más dispositivos.
¿Cuál es la diferencia entre Apple Log y Dolby Vision?
Apple Log es un perfil de color de captura (diseñado para gradación). Dolby Vision es un formato de entrega HDR (diseñado para reproducción). Ocupan diferentes etapas del pipeline. El metraje en Apple Log se grada y se exporta a un formato de entrega; Dolby Vision es una de las opciones de entrega.
¿Cómo detecto el soporte de Apple Log en tiempo de ejecución?
Enumera AVCaptureDevice.formats, luego para cada formato verifica supportedColorSpaces. El soporte para Apple Log aparece como .appleLog en esa lista. Las apps que quieren exponer la captura en Apple Log solo en dispositivos compatibles dependen de esta verificación en lugar de analizar los identificadores de modelo del iPhone.
¿Cuál es la diferencia de tamaño de archivo entre HEVC HDR y ProRes Log?
Aproximadamente 10-50× por minuto, dependiendo del bitrate y la resolución. HEVC HDR en 4K30 ronda los 50-100 MB/min; ProRes 422 HQ en 4K30 ronda los 1,5-2,5 GB/min. Los archivos ProRes Log requieren un SSD externo USB-C para captura sostenida en 4K60; el almacenamiento interno del iPhone tiene límites de tasa para escritura sostenida en ProRes.
¿Puedo mostrar metraje en Apple Log sin un LUT?
Puedes mostrar el video en bruto, pero se verá deslavado y desaturado. El perfil de color Apple Log está pensado para gradación, no para visualización directa. Las apps que necesiten presentar metraje en Apple Log en bruto a los usuarios deberían etiquetarlo como “log” para que los usuarios entiendan el requisito de postprocesamiento; de lo contrario, aplica el LUT de Apple Log → Rec.709 para la visualización.
¿AVFoundation maneja el mapeo tonal de HDR a SDR automáticamente?
Sí, para los reproductores estándar de AVKit (AVPlayerViewController, VideoPlayer de SwiftUI). Los pipelines de video personalizados con Metal deben optar explícitamente por EDR y seleccionar un formato de píxel compatible con HDR; sin eso, el contenido HDR se muestra como SDR recortado.
Referencias
-
Documentación para desarrolladores de Apple: AVFoundation. La referencia del framework que cubre las APIs de captura, edición y reproducción en iOS, iPadOS, macOS, tvOS, watchOS y visionOS. ↩
-
Documentación para desarrolladores de Apple:
AVPlayer.HDRMode. Los tres casos HDR (.hlg,.hdr10,.dolbyVision) y la consultaavailableHDRModespara saber qué admite una instancia deAVPlayerpara el ítem actual. ↩↩ -
Documentación para desarrolladores de Apple:
AVCaptureDeviceyAVCaptureDevice.Format. Las propiedades de formato del dispositivo de captura, incluyendosupportedColorSpacespara la detección de Apple Log eisVideoHDRSupportedpara la viabilidad de HDR. ↩↩ -
Soporte de Pro Apps de Apple: Soporte y descargas de Pro Apps de Apple. El hub de Pro Apps con enlaces a los recursos del perfil Apple Log y los LUTs descargables para convertir metraje en Apple Log a espacios de color de entrega estándar; los LUTs vienen empaquetados con Final Cut Pro y Logic Pro y también como descargas independientes. ↩↩