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 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.