支援的格式

如需媒體格式的一般簡介,請參閱 ExoPlayer 支援的格式頁面。與 Transformer 的載入、擷取及解碼串流設有相同的限制,但 Transformer 不支援 ExoPlayer 隨附的軟體解碼器模組。

Transformer 也仰賴 MediaCodec 進行編碼,且需要多工 (或稱 mux) 輸出媒體檔案,才能限制支援的輸出格式。如要進一步瞭解編碼限制,請參閱 MediaCodec 視訊轉碼器;如要瞭解輸出媒體容器適用的限制,請參閱 MediaMuxer。Transformer 只會輸出 MP4 檔案。

根據預設,Transformer 會使用 MediaMuxer,但您可以選擇是否要使用進行中的 InAppMuxer,以避免 MediaMuxer 對參照影格結構和支援的範例格式有一些限制。在日後推出的版本中,預設 Muxer 將成為應用程式內的多工器。

圖片支援

Transformer 會使用 BitmapFactory 載入及解碼所有圖片素材資源,因此 Transformer 支援 BitmapFactory 的所有格式。如要瞭解支援的圖片類型,請參閱「圖片支援」一文。如果是多畫面格式 (例如 GIF),如果使用 DefaultAssetLoaderFactory,系統會顯示容器中的單一圖片影格。

特殊格式

相較於傳統格式,Transformer 支援以較新的媒體格式輸入輸入內容,且提供特殊功能。

處理 HDR 影片

現在有越來越多的裝置支援 HDR 影片拍攝功能,色彩更鮮明、精準,亮度範圍也更大。

Transformer 支援在具備必要編碼支援的裝置上編輯 Android 13 (API 級別 33) 以上版本的 HDR 影片。編輯 HDR 影片時,所有 GL 影片效果都需要處理 16 位元浮點色彩元件和 BT.2020 色域。HDR_MODE_KEEP_HDR 是建構 Composition 時的預設模式。如果不支援 HDR 編輯,Transformer 會改回使用 HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL

需要解碼和 OpenGL 支援的裝置才可在搭載 Android 10 (API 級別 29) 以上版本的裝置上,將 HDR 轉換成 SDR (又稱為「色調對應」)。如要將 HDR 媒體分享至不支援 HDR 內容的其他應用程式或服務,這項功能就能派上用場。在建立 Composition 時,使用 OpenGL 呼叫 setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) 啟用語調對應。從 Android 12 (API 級別 31) 以上版本開始,MediaCodec 也支援部分裝置 (包括搭載 Android 13 以上版本可拍攝 HDR 影片的所有裝置) 的色調對應。如要啟用 MediaCodec 的色調對應功能,請呼叫 setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)

處理慢動作媒體

慢動作影片包含中繼資料,指出串流各區段的播放速度。壓平合併是指根據慢動作影片產生新影片串流的過程,但其中部分會根據中繼資料加速或減慢。這樣一來,即使播放器未套用慢動作中繼資料,也能正確播放。

如要分割緩慢串流串流,請在 EditedMediaItem 上使用 setFlattenForSlowMotion 建構工具方法。

Kotlin

val editedMediaItem =
    EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build()
val transformer =
    Transformer.Builder(context).addListener(transformerListener).build()
transformer.start(editedMediaItem, outputPath)

Java

EditedMediaItem editedMediaItem =
    new EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build();
Transformer transformer =
    new Transformer.Builder(context).addListener(transformerListener).build();
transformer.start(editedMediaItem, outputPath);

這樣一來,您就能支援慢動作影片,不必擔心處理這些特殊格式問題。您只需儲存並播放整平版本的影片,而非使用原始版本即可。