← 所有文章

AVFoundation HDR与Apple Log:iPhone上的专业视频工作流

iPhone 15 Pro及后续机型在标准HEVC和Apple ProRes编码之外支持录制Apple Log,AVFoundation通过AVCaptureDeviceAVCaptureSession将完整的专业视频技术栈开放给希望参与其中的应用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设备会自动接收色调映射后的输出。使用AVPlayerViewControllerVideoPlayer的应用无需针对显示设备分支判断即可获得正确行为。

三种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+应用意味着什么

三个要点。

  1. 通用应用默认使用HEVC;只有当专业工作流需要时才采用ProRes。 通过10位HEVC采集HDR的消费级视频应用能在合理的文件大小下交付完整的HDR。ProRes是给需要无损调色灵活性的电影制作人和剪辑师用的;文件大小代价是真实存在的。

  2. Apple Log属于iPhone 15 Pro+的能力范畴;明确说明设备要求。 承诺Apple Log采集的应用需要在运行时检查AVCaptureDevice.Format.supportedColorSpaces是否包含.appleLog,并在不支持的设备上优雅降级。该格式检查是按设备进行的,而不是按iOS版本。

  3. 为Apple Log素材捆绑LUT或注明工作流。 处理Apple Log视频的应用需要一条从原始Log到调色交付的路径。要么内嵌LUT并在导入时应用,要么向用户开放Apple提供的LUT,并清楚说明如何在他们选择的NLE中应用。

完整的Apple生态系列:类型化的App IntentsMCP服务器路由问题Foundation Models运行时与工具链LLM之分三种界面单一事实来源模式两台MCP服务器Apple开发的钩子Live ActivitieswatchOS运行时SwiftUI内幕RealityKit的空间心智模型SwiftData模式纪律Liquid Glass模式多平台发布平台矩阵Vision框架符号特效Core ML推理Writing Tools APISwift 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。

参考资料


  1. Apple开发者文档:AVFoundation。涵盖iOS、iPadOS、macOS、tvOS、watchOS和visionOS上采集、编辑和播放API的框架参考。 

  2. Apple开发者文档:AVPlayer.HDRMode。三个HDR枚举值(.hlg.hdr10.dolbyVision),以及用于查询AVPlayer实例对当前播放项支持哪些模式的availableHDRModes查询。 

  3. Apple开发者文档:AVCaptureDeviceAVCaptureDevice.Format。采集设备的格式属性,包括用于Apple Log检测的supportedColorSpaces和用于HDR可行性的isVideoHDRSupported。 

  4. Apple Pro Apps支持:Apple Pro Apps支持与下载。Pro Apps中心,链接到Apple Log配置文件资源以及用于将Apple Log素材转换为标准交付色彩空间的可下载LUT;LUT随Final Cut Pro和Logic Pro捆绑,也以独立下载形式提供。 

相关文章

The Privacy Manifest Deep Dive: What Counts As Data Collection

Apple's privacy manifest is a structured contract, not a checkbox: four sections, five required-reason API categories, S…

14 分钟阅读

SwiftData Migrations: Lightweight vs Custom, And When You Don't Need a V2

SwiftData's migration model uses VersionedSchema, MigrationStage, and SchemaMigrationPlan. Most schema changes don't nee…

13 分钟阅读

The Cleanup Layer Is the Real AI Agent Market

Charlie Labs pivoted from building agents to cleaning up after them. The AI agent market is moving from generation to pr…

15 分钟阅读