自訂

如要控管 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。