Para controlar o comportamento do Transformer, configure opções na superfície da API ou substitua completamente as funções ao escrever implementações personalizadas de interfaces e transmiti-las. Nesta página, descrevemos alguns exemplos.
Controlar a configuração do codec
Por padrão, o Transformer recorrerá a uma resolução compatível se o codificador de hardware do dispositivo não aceitar a resolução de saída solicitada. Por exemplo, o Transformer pode alinhar a largura e a altura da saída a um múltiplo de 2 ou 16, conforme é frequentemente exigido pelos codificadores de hardware. Você pode desativar esse comportamento para que o Transformer gere um erro se não puder produzir a resolução de saída necessária:
Kotlin
transformerBuilder .setEncoderFactory( DefaultEncoderFactory.Builder(context) .setEnableFallback(false) .build())
Java
transformerBuilder .setEncoderFactory( new DefaultEncoderFactory.Builder(context) .setEnableFallback(false) .build());
Da mesma forma, o DefaultEncoderFactory
também é compatível com o uso de configurações de codificação
personalizadas com a opção setRequestedVideoEncoderSettings
.
Você também pode substituir completamente as fábricas de codificadores e decodificadores para ter controle total sobre como os codecs são configurados.
Mixers personalizados
Chame Transformer.setMuxerFactory
para definir um multiplexador personalizado para gravar contêineres de mídia. Por exemplo, se você implementar seu próprio multiplexador no
nível do aplicativo, será possível criar um wrapper que implemente a interface Muxer
e depois usar setMuxerFactory
para injetá-lo no Transformer.