Personnalisation

Pour contrôler le comportement de Transformer, vous pouvez configurer des options sur 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. Vous trouverez sur cette page quelques exemples.

Contrôler la configuration du codec

Par défaut, Transformer utilise 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 16, comme cela est souvent requis par 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 prend également en charge l'utilisation de paramètres d'encodage personnalisés avec l'option setRequestedVideoEncoderSettings.

Vous pouvez également remplacer complètement les fabriques d'encodeurs et de décodeurs afin de contrôler totalement la configuration des codecs.

Multiplicateurs 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'interface Muxer, puis utiliser setMuxerFactory pour l'injecter dans le transformateur.