Personalização

Para controlar o comportamento do Transformer, você pode configurar opções na superfície da API ou substituir partes da funcionalidade completamente escrevendo implementações personalizadas de interfaces e transmitindo-as. Esta página descreve alguns exemplos.

Controlar a configuração do codec

Por padrão, o Transformer vai usar 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 para serem um múltiplo de 2 ou 16, conforme exigido pelos codificadores de hardware. Você pode desativar esse comportamento para que o Transformer gere um erro se não conseguir 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, a DefaultEncoderFactory também oferece suporte ao 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.

Muxers personalizados

Você pode definir um muxer personalizado para gravar contêineres de mídia chamando Transformer.Builder.setMuxerFactory. Por exemplo, se você implementar seu próprio muxer no nível do aplicativo, poderá gravar um wrapper que implementa a Muxer interface e usar setMuxerFactory para injetá-lo em Transformer.Builder.

Se o muxer personalizado oferece suporte à gravação de carimbos de data/hora negativos em listas de edição MP4, verifique se Muxer.Factory#supportsWritingNegativeTimestampsInEditList retorna true. Isso permite que o Transformer realize otimizações, como edições somente de corte usando listas de edição MP4, sem precisar recodificar o vídeo. Para o InAppMp4Muxer padrão, isso já é compatível.