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 pasándolas. 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 la altura de 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 el control total sobre cómo se configuran los códecs.
Multiplexores personalizados
Puedes configurar un multiplexor personalizado para escribir contenedores multimedia llamando a Transformer.Builder.setMuxerFactory. Por ejemplo, si implementas tu propio
multiplexor a nivel de la aplicación, puedes escribir un wrapper que implemente la
Muxer interfaz y, luego, usar setMuxerFactory para insertarlo en
Transformer.Builder.
Si tu multiplexor personalizado admite la escritura de marcas de tiempo negativas en las listas de edición de MP4, debes asegurarte de que
Muxer.Factory#supportsWritingNegativeTimestampsInEditList muestre
true. Esto permite que Transformer realice optimizaciones, como ediciones solo de recorte con listas de edición de MP4, sin necesidad de volver a codificar el video. Para el InAppMp4Muxer predeterminado, esto ya es compatible.