Para controlar el comportamiento de Transformer, puedes configurar opciones en la superficie de la API o reemplazar por completo partes de la funcionalidad escribiendo implementaciones personalizadas de interfaces y pasando esas implementaciones. En esta página, se describen algunos ejemplos.
Controla la configuración del códec
De forma predeterminada, Transformer volverá a una resolución compatible si el codificador de hardware del dispositivo no acepta la resolución de salida solicitada. Por ejemplo, Transformer puede alinear el ancho y el alto de la salida para que sean múltiplos de 2 o 16, como suelen requerir los codificadores de hardware. Puedes desactivar este comportamiento para que Transformer muestre un error si no puede producir la resolución de salida requerida:
Kotlin
transformerBuilder.setEncoderFactory( DefaultEncoderFactory.Builder(context).setEnableFallback(false).build() )
Java
transformerBuilder.setEncoderFactory( new DefaultEncoderFactory.Builder(context).setEnableFallback(false).build());
Del mismo modo, DefaultEncoderFactory también admite el uso de parámetros de configuración de codificación personalizados con la opción setRequestedVideoEncoderSettings.
También puedes reemplazar por completo las fábricas de codificadores y decodificadores para obtener un control total sobre cómo se configuran los códecs.
Muxers personalizados
Puedes establecer un multiplexor personalizado para escribir contenedores de medios llamando a Transformer.setMuxerFactory. Por ejemplo, si implementas tu propio multiplexor a nivel de la aplicación, puedes escribir un wrapper que implemente la interfaz Muxer y, luego, usar setMuxerFactory para insertarlo en Transformer.