Para controlar el comportamiento de Transformer, puedes configurar opciones en la plataforma de la API o reemplazar partes de la funcionalidad por completo escribiendo implementaciones personalizadas de interfaces y los pasamos. En esta página, se describen algunos ejemplos.
Controla la configuración de códecs
De forma predeterminada, Transformer utilizará una resolución compatible si la El codificador de hardware del dispositivo no acepta la resolución de salida solicitada. Para ejemplo, Transformer puede alinear el ancho y la altura del resultado para que sean múltiplos de 2. o 16 como lo suelen requerir los codificadores de hardware. Puedes desactivar este comportamiento por lo que Transformer arroja un error si no puede producir resolución de salida:
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 codificación personalizada.
con la opción setRequestedVideoEncoderSettings
.
También puedes reemplazar completamente las fábricas para que los codificadores y decodificadores control total sobre la configuración de los códecs.
Mezcladores personalizados
Puedes configurar un combinador personalizado para escribir contenedores de medios llamando
Transformer.setMuxerFactory
Por ejemplo, si implementas tu propio combinador en
a nivel de la aplicación, puedes escribir un wrapper que implemente el Muxer
y, luego, usa setMuxerFactory
para insertarla en Transformer.