自訂

如要控制 Transformer 的行為,您可以在 API 介面中設定選項,或編寫介面的自訂實作並傳入,藉此完全取代部分功能。本頁會提供一些範例。

控制轉碼器設定

根據預設,如果裝置的硬體編碼器不接受要求的輸出解析度,Transformer 會改回支援的解析度。舉例來說,Transformer 可將輸出寬度和高度對齊為 2 或 16 的倍數,如同硬體編碼器經常需要的倍數。您可以關閉這個行為,如果 Transformer 無法產生所需的輸出解析度,就會改為擲回錯誤:

Kotlin

transformerBuilder
    .setEncoderFactory(
        DefaultEncoderFactory.Builder(context)
            .setEnableFallback(false)
            .build())

Java

transformerBuilder
    .setEncoderFactory(
        new DefaultEncoderFactory.Builder(context)
            .setEnableFallback(false)
            .build());

同樣地,DefaultEncoderFactory 也支援搭配 setRequestedVideoEncoderSettings 選項使用自訂編碼設定。

您也可以完全取代編碼器和解碼器的工廠,完整掌控轉碼器的設定方式。

客製化多工器

您可以呼叫 Transformer.setMuxerFactory 來設定自訂的多工器,用於編寫媒體容器。舉例來說,如果您在應用程式層級實作自己的多工器,您可以編寫實作 Muxer 介面的包裝函式,然後使用 setMuxerFactory 將其插入 Transformer。