在行動裝置上傳送高動態範圍 (HDR) 影片時,往往會遇到一個重大問題:不同面板的視覺效果不一致。瀏覽混合內容動態消息時,如果標準動態範圍 (SDR) 和 HDR 元素並存,算繪管道會難以平衡兩者。這會導致不穩定、不協調的轉換,以及無法預測的亮度高峰。
對內容創作者來說,這種不一致性會影響藝術意圖。在專業螢幕上精心調色的 HDR 影片,在消費性裝置上播放時,可能會出現高光剪輯、色調褪色或陰影破碎的情況。
Eclipsa 影片是現代 HDR 影片標準,旨在解決這些跨裝置生態系統難題。Eclipsa 影片以 SMPTE ST 2094-50 規格為基礎,可讓螢幕根據實體硬體功能和即時環境光條件,動態調整內容對應。Eclipsa 影片內建於 Jetpack Media3 ExoPlayer 和標準 Camera2 擷取管道,不需設定即可整合,為行動工程團隊提供零成本、無阻礙的途徑,可導入新一代硬體自動調整影片串流,在每個螢幕上保留藝術意圖。
SMPTE ST 2094-50 的技術架構
行動裝置螢幕的亮度餘裕 (高於螢幕參考白點的亮度) 差異極大。如果螢幕的硬體限制不符合 HDR 影片的母帶製作需求,亮部會遭到剪輯或看起來不夠鮮明。環境光感應器會根據周遭環境調整面板,因此螢幕的實際預留空間和參考白點會動態變化。
SMPTE ST 2094-50 解決了這個問題,方法是導入雙層中繼資料,透過兩大要素確保視覺一致性:
參考白色錨點
這會建立嚴格的基準,將 SDR 元素的峰值亮度直接對應至螢幕的參考白點。任何超過這個錨點的亮度值,都嚴格保留給 HDR 亮部。這種可預測的錨定機制可確保 SDR 和 HDR 圖層在螢幕上合成時,能維持預期的視覺關係,不會互相沖淡。
根據餘裕自動調整的增益曲線
創作者不會強制使用靜態色調映射曲線,而是嵌入參數中繼資料,指示顯示管道在可用空間有限時,如何精確縮放。這項標準讓創作者能靈活選擇目標面板是否要軟剪輯高光、硬剪輯高光,或壓縮半調色和陰影,主動保留明亮區域中最精細的細節。
平台支援
Android 17 (API 級別 37) 推出平台層級支援,可播放及擷取 Eclipsa 影片。
實作播放功能
如果是標準應用程式開發,Media3 ExoPlayer 則提供 Eclipsa 影片的現成支援。剖析內嵌 SMPTE 2094-50 中繼資料的檔案時,ExoPlayer 會順暢擷取並套用中繼資料,不需要自訂播放器設定。
標準播放器初始化:如要例項化播放器介面,請參閱「Media3 ExoPlayer 總覽」。
覆寫音軌:如果應用程式會以程式輔助方式查詢或鎖定特定 HDR 設定檔,請參閱 Media3 Track Selection API。
建議將播放管道卸載至 Jetpack Media3。ExoPlayer 原生處理低階容器擷取,完全略過 Android 16 (API 級別 36) 以下版本中,舊版算繪層上已知的平台層級解碼構件。
實作影片擷取
如要從裝置錄製 Eclipsa 影片,必須設定相機管道,指派相容的動態範圍設定檔,產生 SMPTE 2094-50 中繼資料。
使用 CameraCharacteristics 驗證裝置支援後,請使用 DynamicRangeProfiles.HLG10_SMPTE_2094_50 設定檔將串流轉送至編碼器介面。如需在相機工作階段中查詢及設定動態範圍設定檔的操作說明,請參閱「HDR 影片拍攝」。
SMPTE 2094-50 中繼資料不需要明確的轉碼器設定。如果動態設定檔中存在中繼資料,Android 媒體架構會自動附加並傳遞中繼資料。
相容性和效能考量
如要監控效能,請擷取有效的 Display 物件,並檢查 getOverlaySupport() 傳回的 OverlayProperties 是否有 LutProperties,以判斷硬體加速路徑是否可用。
如果裝置不支援硬體加速功能,我們正在開發 Exoplayer 停用 Eclipsa 影片算繪的功能。