AVFoundation HDR i Apple Log: profesjonalne procesy wideo na iPhone
iPhone 15 Pro i nowsze nagrywają Apple Log obok standardowych kodeków HEVC i Apple ProRes, a AVFoundation udostępnia pełny stos profesjonalnego wideo poprzez AVCaptureDevice i AVCaptureSession dla aplikacji, które chcą z niego korzystać1. Strona HDR tego samego frameworka obsługuje HLG, HDR10 i Dolby Vision poprzez AVPlayer.HDRMode, a także wyświetlanie wideo jako EDR za pośrednictwem AVKit. Te dwa elementy (przechwytywanie i wyświetlanie) łączą się przez wybór kodeka, metadane przestrzeni kolorów i przekazanie do aplikacji do gradacji w postprodukcji.
Niniejszy wpis omawia powierzchnię AVFoundation dla profesjonalnego wideo na podstawie dokumentacji Apple. Perspektywa to „co aplikacja musi udostępnić filmowcom, montażystom wideo i aplikacjom uwzględniającym HDR”, ponieważ funkcje frameworka dla profesjonalnego wideo są udokumentowane, ale niereklamowane; większość aplikacji, które mogłyby na tym skorzystać, ich nie udostępnia.
TL;DR
- AVFoundation obsługuje trzy formaty dostarczania HDR: HLG (Hybrid Log-Gamma), HDR10 i Dolby Vision. iOS 26 wprowadził prostszą wartość logiczną
AVPlayer.eligibleForHDRPlaybackjako rekomendowane sprawdzenie; przestarzałeAVPlayer.HDRMode(strukturaOptionSetz.hlg,.hdr10,.dolbyVision) orazavailableHDRModesna poziomie klasy są wycofane, ale nadal rozpoznawalne2. AVCaptureDevice.isVideoHDREnabledodczytuje, czy urządzenie przesyła strumieniowo bufory HDR; ustawienievideoHDREnabled(po wyłączeniuautomaticallyAdjustsVideoHDREnabled) wymusza jego włączenie dla zgodnych formatów.- Apple Log to obszar iPhone 15 Pro+ i iPhone 16 Pro+: płaski, odbarwiony profil koloru do gradacji w postprodukcji. Aplikacje przechwytują go poprzez wybór aktywnego formatu w
AVCaptureDevicena urządzeniach obsługujących przestrzeń kolorów Apple Log, kodowany jako HEVC (10-bitowy) lub Apple ProRes3. - Apple udostępnia oficjalne tablice LUT Apple Log → Rec.709 i Apple Log → Rec.2020 poprzez witrynę dla deweloperów; aplikacje obsługujące przekazanie do postprodukcji dołączają tablicę LUT lub dokumentują, gdzie ją znaleźć4.
- AVKit wyświetla treści HDR jako EDR (Extended Dynamic Range) na obsługujących urządzeniach; urządzenia SDR otrzymują automatycznie wyjście z mapowaniem tonalnym. Aplikacje używające
AVPlayerViewControllerlubVideoPlayeruzyskują właściwe zachowanie bez rozgałęziania na poziomie wyświetlacza.
Trzy formaty HDR
AVFoundation obsługuje trzy formaty HDR. Starszy sposób ich wyliczania to struktura OptionSet AVPlayer.HDRMode (przypadki .hlg, .hdr10, .dolbyVision) oraz właściwość AVPlayer.availableHDRModes na poziomie klasy; iOS 26 wycofuje obie na rzecz prostszej wartości logicznej AVPlayer.eligibleForHDRPlayback na poziomie instancji2.
HLG (Hybrid Log-Gamma). Standard nadawczy, zaprojektowany tak, aby był wstecznie kompatybilny z wyświetlaczami SDR poprawnie interpretującymi sygnał. Treści HLG mogą być odtwarzane na telewizorze SDR bez zmiażdżonych cieni czy wypalonych świateł; ten sam sygnał wygląda lepiej na wyświetlaczu HDR. Aplikacje wymagające najszerszej zgodności z urządzeniami domyślnie wybierają HLG.
HDR10. Standard telewizyjny i streamingowy. Statyczne metadane (szczytowa jasność, gamut kolorów) osadzone w strumieniu; mniej szczegółów niż Dolby Vision, ale bardziej uniwersalny. Większość usług streamingowych oznaczających treści jako „HDR” używa HDR10 lub Dolby Vision.
Dolby Vision. Metadane HDR klatka po klatce, zazwyczaj najwyższej jakości doświadczenie HDR. Wymaga łańcucha wyświetlania obsługującego Dolby Vision (dekoder, wyświetlacz) dla pełnej korzyści; mapuje tonalnie z gracją na wyświetlaczach niższej klasy.
W nowoczesnym kodzie AVPlayer.eligibleForHDRPlayback odczytuje, czy bieżący element odtwarza się w HDR na urządzeniu. Aplikacje wymagające jawnej introspekcji formatu (starsze ścieżki kodu, interfejs zależny od formatu) nadal mogą zapytać AVPlayer.availableHDRModes, ale nowy kod powinien sięgać po prostszą wartość logiczną.
Przechwytywanie wideo HDR przez AVCaptureDevice
HDR po stronie przechwytywania używa właściwości AVCaptureDevice. Dwa punkty kontroli to format i przełącznik HDR:
import AVFoundation
guard let device = AVCaptureDevice.default(for: .video) else { return }
try device.lockForConfiguration()
device.automaticallyAdjustsVideoHDREnabled = false
device.isVideoHDREnabled = true
device.unlockForConfiguration()
Właściwość automaticallyAdjustsVideoHDREnabled domyślnie ma wartość true; iOS wybiera HDR lub SDR dla danego formatu na podstawie warunków pracy. Aplikacje wymagające jawnej kontroli ustawiają ją na false i bezpośrednio przełączają isVideoHDREnabled. Uwaga: właściwość jest obserwowalna; odczyt isVideoHDREnabled odzwierciedla bieżący stan, który może różnić się od ręcznego ustawienia, jeśli format nie obsługuje HDR.
AVCaptureDevice.activeFormat udostępnia obsługę HDR dla formatu poprzez isVideoHDRSupported; nie każdy format na urządzeniu obsługuje HDR. Wzorzec dla aplikacji obsługujących HDR to wyliczenie formats urządzenia, znalezienie tych z isVideoHDRSupported == true w pożądanej rozdzielczości i liczbie klatek, a następnie jawne ustawienie aktywnego formatu przed włączeniem HDR.
Apple Log: profesjonalny przepływ pracy z kolorem
Apple Log to płaski profil koloru dostępny w iPhone 15 Pro / Pro Max / iPhone 16 Pro / Pro Max i nowszych. Profil rejestruje wideo z logarytmiczną krzywą gamma i minimalnym mapowaniem tonalnym w kamerze; obraz wygląda na wyblakły bezpośrednio z kamery, ale zachowuje maksymalną dynamikę dla gradacji w postprodukcji3.
Ścieżka przechwytywania:
1. Wybranie AVCaptureDevice.Format obsługującego Apple Log. Format udostępnia tę informację poprzez listę supportedColorSpaces, która zawiera .appleLog na obsługujących urządzeniach.
2. Ustawienie activeColorSpace urządzenia na .appleLog po zablokowaniu konfiguracji.
3. Skonfigurowanie kodeka nagrywania (HEVC dla ścieżki wewnętrznej iPhone, Apple ProRes dla ścieżki o większej przepustowości).
4. Nagrywanie. Przechwycone wideo zawiera metadane koloru Apple Log.
Przekazanie do postprodukcji to propozycja wartości: Apple Log daje montażyście maksymalną elastyczność w niezależnej gradacji świateł i cieni, kierowaniu koloru w stronach, których kamera nie potrafiłaby uchwycić, oraz dopasowywaniu materiału z innych kamer obsługujących format Log.
Dla aplikacji obsługujących materiał Apple Log (edytory wideo, narzędzia do gradacji koloru, narzędzia do zarządzania zasobami) framework udostępnia metadane koloru poprzez właściwości ścieżki zasobu; aplikacja odczytuje AVAssetTrack.formatDescriptions i sprawdza kCVImageBufferTransferFunctionKey, aby potwierdzić zawartość Apple Log.
Kodowanie: HEVC, ProRes, ProRes Log
Trzy ścieżki kodeków mają znaczenie dla wideo HDR / Apple Log:
HEVC (H.265). Domyślny kodek konsumencki. 10-bitowy HEVC obsługuje HDR (metadane HLG, HDR10, Dolby Vision). Najmniejsze rozmiary plików spośród kodeków obsługujących HDR. iPhone nagrywa większość konsumenckiego wideo HDR poprzez HEVC.
Apple ProRes. Profesjonalny kodek. Większe rozmiary plików (10-50× HEVC przy równoważnej jakości), ale bezstratna kompresja wewnątrzklatkowa, która gradacjonuje czysto. iPhone 15 Pro+ nagrywa ProRes albo do pamięci wewnętrznej (maks. 4K30, ograniczone w trybie ciągłym), albo na zewnętrzny dysk SSD USB-C (4K60 w trybie ciągłym, dłuższe czasy trwania).
Apple ProRes Log. ProRes zakodowany z profilem koloru Apple Log. Ścieżka „profesjonalnego filmowca”: maksymalna elastyczność gradacji, największe pliki, wymaga zewnętrznego dysku SSD do ciągłego przechwytywania 4K60. Celem przekazania jest DaVinci Resolve, Final Cut lub inny program NLE z możliwościami gradacji.
Wybór kodeka jest udostępniany poprzez ustawienia wyjściowe AVCaptureMovieFileOutput. Aplikacje obsługujące przepływ nagrywania ustawiają słownik formatu wyjściowego z kluczem AVVideoCodecKey ustawionym na jeden z .hevc, .proRes422, .proRes422HQ, .proRes422LT, .proRes422Proxy, .proRes4444 itd. Są to stałe statyczne AVVideoCodecType; należy zauważyć, że we współczesnym Swift API nie ma prefiksu „apple”. AVCaptureDevice.Format ogranicza, jakie kodeki urządzenie może przesyłać strumieniowo; nie każdy kodek jest dostępny w każdej rozdzielczości.
Przekazanie do gradacji koloru: tablice LUT
Materiał Apple Log wygląda na wyblakły. Przepływ pracy z gradacją zastosowuje tablicę LUT (Look-Up Table), aby zmapować przestrzeń kolorów Apple Log do docelowego formatu dostarczania (Rec.709 dla SDR, Rec.2020 dla HDR). Apple udostępnia oficjalne tablice LUT poprzez centrum dokumentacji wsparcia Final Cut Pro / Pro Apps4:
- Apple Log do Rec.709. Dostarczanie SDR. Standardowa przestrzeń kolorów dla wideo na YouTube / w sieci.
- Apple Log do Rec.2020 HLG. Dostarczanie HDR poprzez HLG. Nadawanie / ogólny HDR.
- Apple Log do Rec.2020 HDR10. Dostarczanie HDR poprzez HDR10. Streaming HDR.
Aplikacje obsługujące materiał Apple Log albo: 1. Osadzają tablicę LUT bezpośrednio i stosują ją przy importowaniu (Final Cut, DaVinci Resolve, Photoshop z wtyczką LUT) 2. Dokumentują ścieżkę do tablicy LUT, aby montażyści mogli zastosować ją ręcznie
Dla deweloperów aplikacji budujących narzędzie świadome Apple Log właściwym wzorcem jest opcja 1: dołączyć tablicę LUT, zastosować ją przy importowaniu i pozwolić użytkownikom eksportować poprzez standardowy format dostarczania. Tablice LUT dostarczane przez Apple są swobodnie redystrybuowalne na podstawie licencjonowania narzędzi deweloperskich Apple.
Wyświetlanie: EDR przez AVKit
Strona wyświetlania jest w dużej mierze automatyczna. AVPlayerViewController (UIKit) z AVKit oraz VideoPlayer z SwiftUI renderują treści HDR jako EDR (Extended Dynamic Range) na obsługujących wyświetlaczach:
- Wyświetlacze OLED iPhone (iPhone X i nowsze, modele Pro z ProMotion).
- Wyświetlacze mini-LED iPad Pro.
- Wyświetlacze Mac XDR.
- Zewnętrzne wyświetlacze obsługujące HDR poprzez AirPlay.
Dla wyświetlaczy obsługujących tylko SDR system automatycznie mapuje tonalnie treści HDR. Aplikacje nie rozgałęziają się na podstawie możliwości wyświetlacza dla ścieżki odtwarzania; system to obsługuje.
Aplikacje z niestandardowymi potokami wideo (odtwarzacze oparte na Metal, AVSampleBufferDisplayLayer z niestandardowym przetwarzaniem) muszą jawnie włączyć EDR poprzez CAMetalLayer.wantsExtendedDynamicRangeContent lub równoważną właściwość warstwy. Domyślną wartością dla niestandardowych warstw Metal jest SDR; obsługa HDR wymaga jawnego włączenia oraz odpowiadającego formatu pikseli, który obsługuje wartości komponentów >1.0 (zazwyczaj bgr10a2Unorm lub format zmiennoprzecinkowy obsługujący HDR).
Częste niepowodzenia
Trzy wzorce z dzienników niepowodzeń AVFoundation HDR / Apple Log:
Przechwytywanie HDR, ale nagrywanie do kodeka, który tego nie obsługuje. Ustawienie isVideoHDREnabled = true w sesji nagrywającej do 8-bitowego HEVC daje ciche wyjście SDR. Sygnał HDR jest przechwytywany, ale kodowanie go usuwa. Rozwiązanie: sparowanie przechwytywania HDR z 10-bitowym kodekiem (10-bitowy HEVC, ProRes lub ProRes Log).
Przechwytywanie Apple Log bez tablicy LUT w potoku dostarczania. Wideo Apple Log z założenia wygląda na wyblakłe; widzowie oglądający niegradacjonowany materiał Apple Log zakładają, że kamera lub aplikacja są zepsute. Rozwiązanie: zastosowanie tablicy LUT Apple Log → Rec.709 przed wyświetleniem w aplikacji albo udostępnienie materiału użytkownikowi jako „log” z wyraźnym oznaczeniem, aby rozumiał wymóg dotyczący postprodukcji.
Wyświetlanie HDR poprzez wantsExtendedDynamicRangeContent bez bgr10a2Unorm (lub formatu pikseli zmiennoprzecinkowych HDR). Warstwa Metal z włączonym EDR, ale renderująca do formatu pikseli 8-bitowego na kanał, daje obcięte światła. Rozwiązanie: sparowanie włączenia EDR z poprawnym formatem pikseli (10-bitowy bez znaku znormalizowany lub 16-bitowy zmiennoprzecinkowy).
Co ten wzorzec oznacza dla aplikacji na iOS 26+
Trzy wnioski.
-
Domyślnie używać HEVC dla aplikacji ogólnych; sięgać po ProRes tylko, gdy uzasadnia to profesjonalny przepływ pracy. Konsumencka aplikacja wideo przechwytująca HDR poprzez 10-bitowy HEVC dostarcza pełny HDR przy rozsądnych rozmiarach plików. ProRes jest dla filmowców i montażystów potrzebujących bezstratnej elastyczności gradacji; koszt rozmiaru pliku jest realny.
-
Apple Log to obszar iPhone 15 Pro+; należy udokumentować wymóg urządzenia. Aplikacje obiecujące przechwytywanie Apple Log muszą sprawdzać
AVCaptureDevice.Format.supportedColorSpacespod kątem.appleLogw czasie wykonywania i z gracją obniżać funkcjonalność na urządzeniach, które tego nie obsługują. Sprawdzanie formatu jest na poziomie urządzenia, a nie wersji iOS. -
Należy dołączyć tablicę LUT lub udokumentować przepływ pracy dla materiału Apple Log. Aplikacje obsługujące wideo Apple Log potrzebują ścieżki od surowego Log do gradacjonowanego dostarczania. Albo osadzić tablicę LUT i stosować ją przy importowaniu, albo udostępnić użytkownikom tablicę LUT dostarczoną przez Apple z wyraźną dokumentacją, jak zastosować ją w wybranym programie NLE.
Pełny klaster Apple Ecosystem: typowane App Intents; serwery MCP; pytanie o routing; Foundation Models; rozróżnienie środowiska wykonawczego od narzędzi LLM; trzy powierzchnie; wzorzec pojedynczego źródła prawdy; Dwa serwery MCP; hooki dla rozwoju Apple; Live Activities; umowa środowiska wykonawczego watchOS; wewnętrzne mechanizmy SwiftUI; przestrzenny model myślowy RealityKit; dyscyplina schematu SwiftData; wzorce Liquid Glass; wieloplatformowa dystrybucja; macierz platform; framework Vision; Symbol Effects; wnioskowanie Core ML; API Writing Tools; Swift Testing; Privacy Manifest; Dostępność jako platforma; typografia SF Pro; wzorce przestrzenne visionOS; framework Speech; migracje SwiftData; silnik fokusa tvOS; wewnętrzne mechanizmy @Observable; protokół Layout w SwiftUI; niestandardowe SF Symbols; o czym odmawiam pisać. Centrum znajduje się w Serii Apple Ecosystem. W szerszym kontekście iOS z agentami AI, zobacz przewodnik iOS Agent Development.
FAQ
Czy potrzebuję iPhone 15 Pro do nagrywania wideo HDR w mojej aplikacji?
Nie. Wideo HDR (HLG, HDR10) jest obsługiwane na iPhone 12 Pro i nowszych poprzez 10-bitowy HEVC. iPhone 15 Pro i nowsze dodają w szczególności Apple Log; szerszy potok HDR działa na większej liczbie urządzeń.
Jaka jest różnica między Apple Log a Dolby Vision?
Apple Log to profil koloru przechwytywania (zaprojektowany do gradacji). Dolby Vision to format dostarczania HDR (zaprojektowany do odtwarzania). Zajmują różne etapy potoku. Materiał Apple Log jest gradacjonowany i eksportowany do formatu dostarczania; Dolby Vision jest jedną z opcji dostarczania.
Jak wykryć obsługę Apple Log w czasie wykonywania?
Należy wyliczyć AVCaptureDevice.formats, a następnie dla każdego formatu sprawdzić supportedColorSpaces. Obsługa Apple Log pojawia się jako .appleLog na tej liście. Aplikacje, które chcą udostępniać przechwytywanie Apple Log tylko na obsługujących urządzeniach, opierają się na tym sprawdzeniu, zamiast parsować identyfikatory modeli iPhone.
Jaka jest różnica w rozmiarze pliku między HEVC HDR a ProRes Log?
Z grubsza 10-50× na minutę, w zależności od bitrate i rozdzielczości. 4K30 HEVC HDR to około 50-100 MB/min; 4K30 ProRes 422 HQ to około 1,5-2,5 GB/min. Pliki ProRes Log wymagają zewnętrznego dysku SSD USB-C do ciągłego przechwytywania 4K60; pamięć wewnętrzna iPhone ma ograniczoną szybkość zapisu dla ciągłego ProRes.
Czy mogę wyświetlać materiał Apple Log bez tablicy LUT?
Można wyświetlić surowe wideo, ale będzie wyglądać na wyblakłe i odbarwione. Profil koloru Apple Log jest przeznaczony do gradacji, a nie do bezpośredniego oglądania. Aplikacje, które muszą udostępniać użytkownikom surowy materiał Apple Log, powinny oznaczyć go jako „log”, aby użytkownicy rozumieli wymóg postprodukcji; w przeciwnym razie należy zastosować tablicę LUT Apple Log → Rec.709 do wyświetlania.
Czy AVFoundation automatycznie obsługuje mapowanie tonalne HDR-do-SDR?
Tak, dla standardowych odtwarzaczy AVKit (AVPlayerViewController, VideoPlayer z SwiftUI). Niestandardowe potoki wideo Metal muszą jawnie włączyć EDR i wybrać format pikseli obsługujący HDR; bez nich treści HDR wyświetlają się jako obcięte SDR.
Bibliografia
-
Dokumentacja Apple Developer: AVFoundation. Dokumentacja referencyjna frameworka obejmująca API przechwytywania, edycji i odtwarzania w iOS, iPadOS, macOS, tvOS, watchOS i visionOS. ↩
-
Dokumentacja Apple Developer:
AVPlayer.HDRMode. Trzy przypadki HDR (.hlg,.hdr10,.dolbyVision) oraz zapytanieavailableHDRModeso to, co instancjaAVPlayerobsługuje dla bieżącego elementu. ↩↩ -
Dokumentacja Apple Developer:
AVCaptureDeviceiAVCaptureDevice.Format. Właściwości formatu urządzenia przechwytującego, w tymsupportedColorSpacesdo wykrywania Apple Log orazisVideoHDRSupporteddla możliwości HDR. ↩↩ -
Wsparcie Apple Pro Apps: Wsparcie i pliki do pobrania Apple Pro Apps. Centrum Pro Apps zawierające linki do zasobów profilu Apple Log oraz tablice LUT do pobrania, służące do konwersji materiału Apple Log na standardowe przestrzenie kolorów dostarczania; tablice LUT są dostarczane razem z Final Cut Pro i Logic Pro oraz jako samodzielne pliki do pobrania. ↩↩