Personalización

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.