Transformer vous permet de combiner plusieurs assets multimédias, tels que des vidéos, des images et des fichiers audio, pour créer un Composition.
Exporter une composition
Pour appliquer des transformations (telles que des effets ou des modifications de découpage) à un MediaItem, vous devez créer un EditedMediaItem pour représenter l'élément auquel les transformations sont appliquées.
Les objets EditedMediaItem peuvent ensuite être concaténés pour créer un EditedMediaItemSequence.
Par exemple, vous pouvez créer un EditedMediaItemSequence avec deux vidéos modifiées. Les éléments d'un EditedMediaItemSequence sont ordonnés de manière séquentielle et ne se chevauchent pas dans le temps.
Un Composition est une combinaison d'un ou plusieurs objets EditedMediaItemSequence. Tous les objets EditedMediaItemSequence du Composition sont mixés ensemble, ce qui vous permet de combiner des composants vidéo et audio.
Les objets Composition peuvent être exportés à l'aide de Transformer.
Voici un exemple de création et d'exportation d'un élément vidéo composé de deux extraits vidéo modifiés, superposés à une piste audio :
Kotlin
val transformer = ... // Set up Transformer instance val video1 = EditedMediaItem.Builder( MediaItem.fromUri(video1Uri)) .build() val video2 = EditedMediaItem.Builder( MediaItem.fromUri(video2Uri)) .build() val videoSequence = EditedMediaItemSequence.Builder( setOf(C.TRACK_TYPE_AUDIO, C.TRACK_TYPE_VIDEO)) .addItems(video1, video2) .build() val backgroundAudio = EditedMediaItem.Builder( MediaItem.fromUri(audioUri)) .build() val backgroundAudioSequence = EditedMediaItemSequence.Builder( setOf(C.TRACK_TYPE_AUDIO)) .addItem(backgroundAudio) .setIsLooping(true) // Loop audio track through duration of videoSequence .build() val composition = Composition.Builder( videoSequence, backgroundAudioSequence) .build() val filePath = ... // Provide file path to save Composition transformer.start(composition, filePath)
Java
Transformer transformer = ... // Set up Transformer instance EditedMediaItem video1 = new EditedMediaItem.Builder( MediaItem.fromUri(video1Uri)) .build(); EditedMediaItem video2 = new EditedMediaItem.Builder( MediaItem.fromUri(video2Uri)) .build(); EditedMediaItemSequence videoSequence = new EditedMediaItemSequence.Builder( ImmutableSet.of(C.TRACK_TYPE_AUDIO, C.TRACK_TYPE_VIDEO)) .addItems(video1, video2) .build(); EditedMediaItem backgroundAudio = new EditedMediaItem.Builder( MediaItem.fromUri(audioUri)) .build(); EditedMediaItemSequence backgroundAudioSequence = new EditedMediaItemSequence.Builder( ImmutableSet.of(C.TRACK_TYPE_AUDIO)) .addItem(backgroundAudio) .setIsLooping(true) // Loop audio track through duration of videoSequence .build(); String filePath = ... // Provide file path to save Composition Composition composition = new Composition.Builder( videoSequence, backgroundAudioSequence) .build(); transformer.start(composition, filePath);
Exemples de cas d'utilisation acceptés
Voici une liste non exhaustive de cas d'utilisation que l'API Transformer prend en charge avec les compositions :
- Combinaison séquentielle de composants audio, d'image et vidéo.
- Ajouter un son de fond à un élément vidéo
- Ajouter des effets à une composition
- Mappage de ton de l'entrée HDR vers SDR pour générer une sortie SDR de meilleure qualité visuelle.
Limites actuelles
Les séquences d'une composition doivent respecter les conditions décrites dans Transformer.start().
De plus, les opérations suivantes ne sont pas encore prises en charge lorsque vous travaillez avec des compositions :
- Fondu enchaîné des pistes vidéo ou audio
Demandes de fonctionnalités
Si vous avez des demandes de fonctionnalités pour l'API Transformer, créez un problème dans le dépôt GitHub Media3.