Personnalisation

Pour contrôler le comportement de Transformer, vous pouvez configurer des options dans la surface de l'API ou remplacer complètement des éléments de fonctionnalité en écrivant des implémentations personnalisées d'interfaces et en les transmettant. Cette page décrit quelques exemples.

Contrôler la configuration du codec

Par défaut, Transformer reviendra à une résolution compatible si l'encodeur matériel de l'appareil n'accepte pas la résolution de sortie demandée. Par exemple, Transformer peut aligner la largeur et la hauteur de sortie pour qu'elles soient un multiple de 2 ou de 16, comme l'exigent souvent les encodeurs matériels. Vous pouvez désactiver ce comportement afin que Transformer génère une erreur s'il ne peut pas produire la résolution de sortie requise :

Kotlin

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

Java

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

De même, DefaultEncoderFactory permet également d'utiliser des paramètres d'encodage personnalisés avec l'option setRequestedVideoEncoderSettings.

Vous pouvez également remplacer complètement les usines pour les encodeurs et les décodeurs afin de contrôler entièrement la configuration des codecs.

Multiplexeurs personnalisés

Vous pouvez définir un multiplexeur personnalisé pour écrire des conteneurs multimédias en appelant Transformer.setMuxerFactory. Par exemple, si vous implémentez votre propre multiplexeur au niveau de l'application, vous pouvez écrire un wrapper qui implémente l'Muxer interface, puis utiliser setMuxerFactory pour l'injecter dans Transformer.

Si votre multiplexeur personnalisé est compatible avec l'écriture d'horodatages négatifs dans les listes de modification MP4, vous devez vous assurer que Muxer.Factory#supportsWritingNegativeTimestampsInEditList renvoie true. Cela permet à Transformer d'effectuer des optimisations, telles que des modifications de découpage uniquement à l'aide de listes de modification MP4, sans avoir à réencoder la vidéo. Pour le InAppMp4Muxer par défaut, cette fonctionnalité est déjà prise en charge.