Personalización

Para controlar el comportamiento de Transformer, puedes configurar opciones en la superficie de la API o reemplazar partes de la funcionalidad por completo escribiendo implementaciones personalizadas de interfaces y pasándolas. En esta página, se describen algunos ejemplos.

Cómo controlar la configuración de códecs

De forma predeterminada, el transformador recurrirá a una resolución compatible si el codificador de hardware del dispositivo no acepta la resolución de salida solicitada. Por ejemplo, el transformador puede alinear el ancho y la altura de salida para que sean múltiplos de 2 o 16, como suele requerir los codificadores de hardware. Puedes desactivar este comportamiento para que el transformador arroje 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 la configuración de codificación personalizada con la opción setRequestedVideoEncoderSettings.

También puedes reemplazar por completo las fábricas de codificadores y decodificadores para obtener un control total de la configuración de los códecs.

Muxers personalizados

Puedes llamar a Transformer.setMuxerFactory para configurar un combinador personalizado para escribir contenedores de medios. Por ejemplo, si implementas tu propio combinador en el nivel de la aplicación, puedes escribir un wrapper que implemente la interfaz Muxer y, luego, usar setMuxerFactory para insertarlo en Transformer.