AVFoundation HDR与Apple Log:iPhone上的专业视频工作流
iPhone 15 Pro及后续机型在标准HEVC和Apple ProRes编码之外支持录制Apple Log,AVFoundation通过AVCaptureDevice和AVCaptureSession将完整的专业视频技术栈开放给希望参与其中的应用1。同一框架的HDR部分通过AVPlayer.HDRMode支持HLG、HDR10和Dolby Vision,并通过AVKit以EDR形式呈现视频显示。两个部分(采集和显示)通过编码选择、色彩空间元数据以及向调色应用的后期制作交接相互衔接。
本文按Apple文档梳理AVFoundation面向专业视频的接口。视角是”应用需要为电影制作人、视频剪辑师以及关注HDR的应用开放哪些能力”,因为该框架的专业视频功能虽有文档但缺乏宣传;本可受益的大多数应用都没有开放这些功能。
TL;DR
- AVFoundation支持三种HDR交付格式:HLG(混合对数伽马)、HDR10和Dolby Vision。iOS 26引入了更简单的
AVPlayer.eligibleForHDRPlayback布尔值作为推荐检查方式;旧的AVPlayer.HDRMode(一个OptionSet结构体,包含.hlg、.hdr10、.dolbyVision)和类级别的availableHDRModes已弃用,但仍可解析2。 AVCaptureDevice.isVideoHDREnabled读取设备是否正在输出HDR缓冲区;设置videoHDREnabled(在禁用automaticallyAdjustsVideoHDREnabled之后)会为兼容格式强制启用HDR。- Apple Log是iPhone 15 Pro+和iPhone 16 Pro+的专属能力:一种平直、低饱和度的色彩配置文件,用于后期调色。应用通过
AVCaptureDevice在支持Apple Log色彩空间的设备上进行活动格式选择来采集Apple Log,编码为HEVC(10位)或Apple ProRes3。 - Apple通过开发者网站提供官方的Apple Log → Rec.709和Apple Log → Rec.2020 LUT;处理后期制作交接的应用要么内嵌LUT,要么注明在哪里可以找到4。
- AVKit在支持的设备上以EDR(扩展动态范围)形式显示HDR内容;SDR设备会自动接收色调映射后的输出。使用
AVPlayerViewController或VideoPlayer的应用无需针对显示设备分支判断即可获得正确行为。
三种HDR格式
AVFoundation支持三种HDR格式。旧的枚举方式是AVPlayer.HDRMode OptionSet结构体(包含.hlg、.hdr10、.dolbyVision)以及类级别的AVPlayer.availableHDRModes属性;iOS 26弃用了二者,转而使用更简单的实例级AVPlayer.eligibleForHDRPlayback布尔值2。
HLG(混合对数伽马)。 广播标准,设计上与正确解读信号的SDR显示器向后兼容。HLG内容可在SDR电视上播放而不会出现暗部死黑或高光过曝;同样的信号在HDR显示器上看起来更佳。需要最广泛设备兼容性的应用默认采用HLG。
HDR10。 电视/流媒体标准。流中嵌入静态元数据(峰值亮度、色域),细节少于Dolby Vision但更通用。大多数将内容标记为”HDR”的流媒体服务使用HDR10或Dolby Vision。
Dolby Vision。 逐帧HDR元数据,通常是最高质量的HDR体验。需要支持Dolby Vision的显示链路(解码器、显示器)才能完全发挥优势;在低端显示设备上可优雅地进行色调映射。
对于现代代码,AVPlayer.eligibleForHDRPlayback读取当前播放项是否在该设备上以HDR播放。需要显式格式自省的应用(旧代码路径、特定格式的UI)仍可查询AVPlayer.availableHDRModes,但新代码应采用更简单的布尔值。
通过AVCaptureDevice采集HDR视频
采集端的HDR使用AVCaptureDevice属性。两个控制点是格式和HDR开关:
import AVFoundation
guard let device = AVCaptureDevice.default(for: .video) else { return }
try device.lockForConfiguration()
device.automaticallyAdjustsVideoHDREnabled = false
device.isVideoHDREnabled = true
device.unlockForConfiguration()
automaticallyAdjustsVideoHDREnabled属性默认为true;iOS会根据运行条件按格式选择HDR或SDR。希望显式控制的应用将其设为false并直接切换isVideoHDREnabled。注意:该属性可观察;读取isVideoHDREnabled反映的是当前状态,如果格式不支持HDR,可能与手动设置不一致。
AVCaptureDevice.activeFormat通过isVideoHDRSupported暴露格式的HDR支持情况;并非设备上的每种格式都支持HDR。HDR能力应用的模式是枚举设备的formats,找到在所需分辨率和帧率下isVideoHDRSupported == true的格式,并在启用HDR之前显式设置活动格式。
Apple Log:专业色彩工作流
Apple Log是iPhone 15 Pro / Pro Max / iPhone 16 Pro / Pro Max及后续机型上提供的平直色彩配置文件。该配置文件以对数伽马曲线和最少的机内色调映射记录视频;图像直出时显得灰暗,但保留了最大的动态范围以供后期调色3。
采集路径:
1. 选择支持Apple Log的AVCaptureDevice.Format。该格式通过supportedColorSpaces列表暴露这一能力,在支持的设备上该列表包含.appleLog。
2. 在锁定配置后将设备的activeColorSpace设为.appleLog。
3. 配置录制编码(iPhone内部路径使用HEVC,更高带宽路径使用Apple ProRes)。
4. 进行录制。采集到的视频携带Apple Log色彩元数据。
后期制作交接体现了价值主张:Apple Log让剪辑师能最大灵活地独立调色高光和暗部,将颜色拉向相机本身做不到的方向,并与其他支持Log的相机素材匹配。
对于处理Apple Log素材的应用(视频编辑器、调色工具、资产管理工具),框架通过资产的轨道属性暴露色彩元数据;应用读取AVAssetTrack.formatDescriptions并检查kCVImageBufferTransferFunctionKey以确认是Apple Log内容。
编码:HEVC、ProRes、ProRes Log
三条编码路径对HDR / Apple Log视频至关重要:
HEVC(H.265)。 默认的消费级编码。10位HEVC支持HDR(HLG、HDR10、Dolby Vision元数据)。在支持HDR的编码中文件最小。iPhone的大多数消费级HDR视频通过HEVC录制。
Apple ProRes。 专业编码。文件更大(同等质量下是HEVC的10-50倍),但帧内无损压缩可干净地调色。iPhone 15 Pro+将ProRes录制到内部存储(最高4K30,持续录制受限)或外接USB-C SSD(持续4K60,时长更久)。
Apple ProRes Log。 以Apple Log色彩配置文件编码的ProRes。”专业电影制作人”路径:最大的调色灵活性、最大的文件、需要外接SSD才能持续采集4K60。交接目标是DaVinci Resolve、Final Cut或其他具备调色能力的NLE。
编码选择通过AVCaptureMovieFileOutput的输出设置开放。处理录制流程的应用通过将AVVideoCodecKey设为.hevc、.proRes422、.proRes422HQ、.proRes422LT、.proRes422Proxy、.proRes4444等之一来设置输出格式字典。这些是AVVideoCodecType静态常量;注意现代Swift API中没有”apple”前缀。AVCaptureDevice.Format约束了设备可流式输出哪些编码;并非每种编码在每种分辨率下都可用。
调色交接:LUT
Apple Log素材看起来灰暗。调色工作流应用LUT(查找表)将Apple Log的色彩空间映射到交付目标(SDR的Rec.709、HDR的Rec.2020)。Apple通过Final Cut Pro / Pro Apps支持文档中心提供官方LUT4:
- Apple Log转Rec.709。 SDR交付。标准的YouTube/网络视频色彩空间。
- Apple Log转Rec.2020 HLG。 通过HLG的HDR交付。广播/通用HDR。
- Apple Log转Rec.2020 HDR10。 通过HDR10的HDR交付。流媒体HDR。
处理Apple Log素材的应用要么: 1. 直接内嵌LUT并在导入时应用(Final Cut、DaVinci Resolve、装有LUT插件的Photoshop) 2. 注明LUT路径以便剪辑师手动应用
对于构建Apple Log感知工具的应用开发者,正确的模式是选项1:捆绑LUT、在导入时应用,并让用户通过标准交付格式导出。Apple提供的LUT可根据Apple开发者工具许可自由再分发。
显示:通过AVKit的EDR
显示端基本是自动的。AVKit的AVPlayerViewController(UIKit)和SwiftUI的VideoPlayer都在支持的显示器上以EDR(扩展动态范围)渲染HDR内容:
- iPhone OLED显示屏(iPhone X及后续机型,带ProMotion的Pro机型)。
- iPad Pro miniLED显示屏。
- Mac XDR显示器。
- 通过AirPlay连接的外接HDR显示器。
对于仅支持SDR的显示器,系统会自动对HDR内容进行色调映射。应用在播放路径上不需要针对显示能力分支判断;系统会处理。
具有自定义视频管线(基于Metal的播放器、带自定义处理的AVSampleBufferDisplayLayer)的应用需要通过CAMetalLayer.wantsExtendedDynamicRangeContent或等价的图层属性显式启用EDR。自定义Metal图层的默认值是SDR;HDR支持需要显式启用,并搭配支持>1.0分量值的对应像素格式(通常是bgr10a2Unorm或支持HDR的浮点格式)。
常见失败
来自AVFoundation HDR / Apple Log失败日志的三种模式:
采集HDR但录制到不支持HDR的编码。 在录制为8位HEVC的会话上设置isVideoHDREnabled = true会产生静默的SDR输出。HDR信号被采集到,但编码会将其剥离。修复方法:将HDR采集与10位编码(10位HEVC、ProRes或ProRes Log)配对。
Apple Log采集但交付管线中没有LUT。 Apple Log视频按设计就显得灰暗;看到未调色Apple Log素材的观众会以为相机或应用坏了。修复方法:要么在应用中显示前应用Apple Log → Rec.709 LUT,要么明确将素材标记为”log”提示用户,让他们理解后期处理需求。
通过wantsExtendedDynamicRangeContent显示HDR但没有bgr10a2Unorm(或浮点HDR像素格式)。 启用了EDR但渲染到每通道8位像素格式的Metal图层会出现高光裁切。修复方法:将EDR启用与正确的像素格式(10位无符号归一化或16位浮点)配对。
这一模式对iOS 26+应用意味着什么
三个要点。
-
通用应用默认使用HEVC;只有当专业工作流需要时才采用ProRes。 通过10位HEVC采集HDR的消费级视频应用能在合理的文件大小下交付完整的HDR。ProRes是给需要无损调色灵活性的电影制作人和剪辑师用的;文件大小代价是真实存在的。
-
Apple Log属于iPhone 15 Pro+的能力范畴;明确说明设备要求。 承诺Apple Log采集的应用需要在运行时检查
AVCaptureDevice.Format.supportedColorSpaces是否包含.appleLog,并在不支持的设备上优雅降级。该格式检查是按设备进行的,而不是按iOS版本。 -
为Apple Log素材捆绑LUT或注明工作流。 处理Apple Log视频的应用需要一条从原始Log到调色交付的路径。要么内嵌LUT并在导入时应用,要么向用户开放Apple提供的LUT,并清楚说明如何在他们选择的NLE中应用。
完整的Apple生态系列:类型化的App Intents;MCP服务器;路由问题;Foundation Models;运行时与工具链LLM之分;三种界面;单一事实来源模式;两台MCP服务器;Apple开发的钩子;Live Activities;watchOS运行时;SwiftUI内幕;RealityKit的空间心智模型;SwiftData模式纪律;Liquid Glass模式;多平台发布;平台矩阵;Vision框架;符号特效;Core ML推理;Writing Tools API;Swift Testing;隐私清单;作为平台的无障碍;SF Pro字体系统;visionOS空间模式;Speech框架;SwiftData迁移;tvOS焦点引擎;@Observable内幕;SwiftUI Layout协议;自定义SF Symbols;我拒绝写的内容。中心入口是Apple生态系列。关于更广泛的iOS与AI智能体上下文,请参阅iOS Agent Development指南。
FAQ
我需要iPhone 15 Pro才能在应用中录制HDR视频吗?
不需要。HDR视频(HLG、HDR10)通过10位HEVC在iPhone 12 Pro及后续机型上得到支持。iPhone 15 Pro及后续机型专门增加了Apple Log;更广泛的HDR管线在更多设备上可用。
Apple Log与Dolby Vision有什么区别?
Apple Log是采集色彩配置文件(为调色而设计)。Dolby Vision是交付HDR格式(为播放而设计)。它们处于管线的不同阶段。Apple Log素材会被调色并导出到交付格式;Dolby Vision是交付选项之一。
如何在运行时检测Apple Log支持?
枚举AVCaptureDevice.formats,然后对每种格式检查supportedColorSpaces。Apple Log支持在该列表中表现为.appleLog。希望仅在支持的设备上开放Apple Log采集的应用应基于该检查,而不是解析iPhone机型标识符。
HEVC HDR与ProRes Log的文件大小差异有多大?
每分钟大约相差10-50倍,取决于码率和分辨率。4K30 HEVC HDR约为50-100 MB/分钟;4K30 ProRes 422 HQ约为1.5-2.5 GB/分钟。ProRes Log文件需要外接USB-C SSD才能持续采集4K60;iPhone的内部存储在持续ProRes写入时受速率限制。
没有LUT能显示Apple Log素材吗?
可以显示原始视频,但看起来会灰暗、低饱和。Apple Log色彩配置文件用于调色,不用于直接观看。需要向用户呈现原始Apple Log素材的应用应将其标记为”log”,让用户理解后期处理需求;否则,应用Apple Log → Rec.709 LUT用于显示。
AVFoundation会自动处理HDR到SDR的色调映射吗?
对于AVKit的标准播放器(AVPlayerViewController、SwiftUI的VideoPlayer)会。自定义Metal视频管线需要显式启用EDR并选择支持HDR的像素格式;缺少这两者时,HDR内容会显示为被裁切的SDR。
参考资料
-
Apple开发者文档:AVFoundation。涵盖iOS、iPadOS、macOS、tvOS、watchOS和visionOS上采集、编辑和播放API的框架参考。 ↩
-
Apple开发者文档:
AVPlayer.HDRMode。三个HDR枚举值(.hlg、.hdr10、.dolbyVision),以及用于查询AVPlayer实例对当前播放项支持哪些模式的availableHDRModes查询。 ↩↩ -
Apple开发者文档:
AVCaptureDevice和AVCaptureDevice.Format。采集设备的格式属性,包括用于Apple Log检测的supportedColorSpaces和用于HDR可行性的isVideoHDRSupported。 ↩↩ -
Apple Pro Apps支持:Apple Pro Apps支持与下载。Pro Apps中心,链接到Apple Log配置文件资源以及用于将Apple Log素材转换为标准交付色彩空间的可下载LUT;LUT随Final Cut Pro和Logic Pro捆绑,也以独立下载形式提供。 ↩↩