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