Personalização

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.