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.