← 所有文章

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(Hybrid Log-Gamma)、HDR10 與 Dolby Vision。iOS 26 引入了較簡單的 AVPlayer.eligibleForHDRPlayback 布林值作為建議的檢查方式;舊版的 AVPlayer.HDRMode(具有 .hlg.hdr10.dolbyVisionOptionSet 結構)以及類別層級的 availableHDRModes 已棄用,但仍可解析2
  • AVCaptureDevice.isVideoHDREnabled 讀取裝置是否正在串流 HDR 緩衝區;設定 videoHDREnabled(在停用 automaticallyAdjustsVideoHDREnabled 之後)會強制相容格式啟用 HDR。
  • Apple Log 為 iPhone 15 Pro+ 與 iPhone 16 Pro+ 機型專屬:這是一種扁平、低飽和度的色彩描述檔,供後製調色使用。應用程式在支援 Apple Log 色彩空間的裝置上,透過 AVCaptureDevice 的作用中格式選擇進行擷取,並以 HEVC(10 位元)或 Apple ProRes 編碼3
  • Apple 透過開發者網站提供官方的 Apple Log → Rec.709 與 Apple Log → Rec.2020 LUT;處理後製接力的應用程式應內建該 LUT 或記錄取得位置4
  • AVKit 在支援的裝置上將 HDR 內容顯示為 EDR(擴展動態範圍);SDR 裝置會自動接收經色調對映的輸出。使用 AVPlayerViewControllerVideoPlayer 的應用程式無需依顯示器分支即可獲得正確的行為。

三種 HDR 格式

AVFoundation 支援三種 HDR 格式。傳統的列舉方式是 AVPlayer.HDRMode OptionSet 結構(具有 .hlg.hdr10.dolbyVision 等 case)以及類別層級的 AVPlayer.availableHDRModes 屬性;iOS 26 將兩者皆棄用,改採較簡單的實例層級 AVPlayer.eligibleForHDRPlayback 布林值2

HLG(Hybrid Log-Gamma)。廣播標準,設計為與能正確解讀訊號的 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 透過 HEVC 錄製大多數消費級 HDR 影片。

Apple ProRes。專業編解碼器。檔案較大(同等品質下為 HEVC 的 10–50 倍),但採用無損的影格內壓縮,可乾淨地進行調色。iPhone 15 Pro+ 可錄製 ProRes 至內部儲存空間(最高 4K30,持續錄製受限)或外接 USB-C SSD(持續 4K60,可錄製較長時間)。

Apple ProRes Log。以 Apple Log 色彩描述檔編碼的 ProRes。「專業電影製作者」路徑:最大的調色彈性、最大的檔案,持續 4K60 擷取需要外接 SSD。接力目標是 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 to Rec.709。SDR 交付。標準的 YouTube / 網路影片色彩空間。
  • Apple Log to Rec.2020 HLG。透過 HLG 進行 HDR 交付。廣播 / 通用 HDR。
  • Apple Log to 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 皆會在支援的顯示器上將 HDR 內容渲染為 EDR(擴展動態範圍):

  • iPhone OLED 顯示器(iPhone X 及更新機型,具備 ProMotion 的 Pro 機型)。
  • iPad Pro mini-LED 顯示器。
  • Mac XDR 顯示器。
  • 透過 AirPlay 連接的支援 HDR 外接顯示器。

對於僅支援 SDR 的顯示器,系統會自動對 HDR 內容進行色調對映。應用程式無需在播放路徑上依顯示器能力分支;系統會處理。

具有自訂影片管線的應用程式(以 Metal 為基礎的播放器、搭配自訂處理的 AVSampleBufferDisplayLayer)需要透過 CAMetalLayer.wantsExtendedDynamicRangeContent 或等效的層屬性明確選擇加入 EDR。自訂 Metal 層的預設為 SDR;HDR 支援需要明確選擇加入,以及對應支援 >1.0 元件值的像素格式(通常為 bgr10a2Unorm 或支援 HDR 的浮點格式)。

常見失敗

從 AVFoundation HDR / Apple Log 失敗紀錄中歸納出三種模式:

擷取 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 Intents;MCP 伺服器;路由問題;Foundation Models;執行時與工具 LLM 的區別;三個介面;單一資料來源模式;兩台 MCP 伺服器;Apple 開發的 hooks;Live Activities;watchOS 執行時合約;SwiftUI 內部;RealityKit 的空間心智模型;SwiftData 結構紀律;Liquid Glass 模式;多平台發佈;平台矩陣;Vision 框架;Symbol Effects;Core ML 推論;Writing Tools API;Swift Testing;Privacy Manifest;無障礙作為平台;SF Pro 字體排印;visionOS 空間模式;Speech 框架;SwiftData 遷移;tvOS 焦點引擎;@Observable 內部;SwiftUI Layout 協定;自訂 SF Symbols;我拒絕撰寫的內容。中心位於 Apple Ecosystem Series。如需更廣泛的 iOS 與 AI agents 整合脈絡,請參閱 iOS Agent Development guide

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 形式顯示。

References


  1. Apple Developer Documentation: AVFoundation. 涵蓋 iOS、iPadOS、macOS、tvOS、watchOS 與 visionOS 上擷取、編輯與播放 APIs 的框架參考文件。 

  2. Apple Developer Documentation: AVPlayer.HDRMode. 三種 HDR case(.hlg.hdr10.dolbyVision),以及用於查詢 AVPlayer 實例對目前項目支援哪些格式的 availableHDRModes。 

  3. Apple Developer Documentation: AVCaptureDeviceAVCaptureDevice.Format. 擷取裝置的格式屬性,包括用於 Apple Log 偵測的 supportedColorSpaces 以及用於判斷 HDR 可行性的 isVideoHDRSupported。 

  4. Apple Pro Apps Support: Apple Pro Apps support and downloads. Pro Apps 中心連結到 Apple Log Profile 資源以及可下載的 LUT,用於將 Apple Log 素材轉換為標準交付色彩空間;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 分鐘閱讀