Personalização

Para controlar o comportamento do Transformer, configure opções na superfície da API ou substituir completamente partes da funcionalidade escrevendo implementações personalizadas de interfaces e transmiti-las. Nesta página, descrevemos alguns exemplos.

Controlar configuração do codec

Por padrão, o Transformer voltará a uma resolução compatível se o o codificador de hardware do dispositivo não aceita a resolução de saída solicitada. Para exemplo, o transformador pode alinhar a largura e a altura da saída para ser um múltiplo de 2 ou 16, como é exigido dos codificadores de hardware. É possível desativar esse comportamento de modo que o Transformer, em vez disso, emita um erro se não for possível produzir o resolução de saída:

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 oferece suporte ao uso de codificação personalizada com a opção setRequestedVideoEncoderSettings.

Também é possível substituir completamente as fábricas por codificadores e decodificadores para controle total sobre a configuração dos codecs.

Muxers personalizados

É possível definir um multiplexador personalizado para criar contêineres de mídia chamando Transformer.setMuxerFactory: Por exemplo, se você implementar seu próprio multiplexador no nível do aplicativo, crie um wrapper que implemente a classe Muxer interface de usuário e, em seguida, usar setMuxerFactory para injetá-la no Transformer.