Personalizzazione

Per controllare il comportamento di Transformer, puoi configurare le opzioni nella superficie API o sostituire completamente parti della funzionalità scrivendo implementazioni personalizzate delle interfacce e passandole. Questa pagina descrive alcuni esempi.

Controllare la configurazione del codec

Per impostazione predefinita, Transformer eseguirà il fallback a una risoluzione supportata se l'encoder hardware del dispositivo non accetta la risoluzione di output richiesta. Ad esempio, Transformer può allineare la larghezza e l'altezza dell'output in modo che siano un multiplo di 2 o 16, come spesso richiesto dagli encoder hardware. Puoi disattivare questo comportamento in modo che Transformer generi un errore se non riesce a produrre la risoluzione di output richiesta:

Kotlin

transformerBuilder.setEncoderFactory(
  DefaultEncoderFactory.Builder(context).setEnableFallback(false).build()
)

Java

transformerBuilder.setEncoderFactory(
    new DefaultEncoderFactory.Builder(context).setEnableFallback(false).build());

Allo stesso modo, DefaultEncoderFactory supporta anche l'utilizzo di impostazioni di codifica personalizzate con l'opzione setRequestedVideoEncoderSettings.

Puoi anche sostituire completamente le factory per encoder e decoder per avere il pieno controllo sulla configurazione dei codec.

Muxer personalizzati

Puoi impostare un muxer personalizzato per la scrittura di container multimediali chiamando Transformer.Builder.setMuxerFactory. Ad esempio, se implementi il tuo muxer a livello di applicazione, puoi scrivere un wrapper che implementa l'interfaccia Muxer e poi utilizzare setMuxerFactory per inserirlo in Transformer.Builder.

Se il tuo muxer personalizzato supporta la scrittura di timestamp negativi negli elenchi di modifiche MP4, devi assicurarti che Muxer.Factory#supportsWritingNegativeTimestampsInEditList restituisca true. In questo modo, Transformer può eseguire ottimizzazioni, ad esempio modifiche solo di ritaglio utilizzando gli elenchi di modifiche MP4, senza dover ricodificare il video. Per InAppMp4Muxer predefinito, questa funzionalità è già supportata.