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