Avec Transformer, vous pouvez combiner plusieurs éléments multimédias, tels que des vidéos,
des images et des fichiers audio pour créer un Composition
.
Exporter une composition
Appliquer des transformations
(comme les effets ou les modifications) à 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 une
EditedMediaItemSequence
Par exemple, vous pouvez créer une EditedMediaItemSequence
avec deux modifications
vidéos. Les éléments dans un EditedMediaItemSequence
sont ordonnés de manière séquentielle et
ne se chevauchent pas
dans le temps.
Un Composition
est la combinaison d'un ou de plusieurs EditedMediaItemSequence
.
d'objets. Tous les objets EditedMediaItemSequence
de Composition
sont mixtes
ce qui vous permet de combiner
des assets 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 asset vidéo composé de deux extraits vidéo modifiés, avec une piste audio en superposition:
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( video1, video2) val backgroundAudio = EditedMediaItem.Builder( MediaItem.fromUri(audioUri)) .build() val backgroundAudioSequence = EditedMediaItemSequence( ImmutableList.of(backgroundAudio), /* isLooping= */ true) // Loop audio track through duration of videoSequence 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( video1, video2); EditedMediaItem backgroundAudio = new EditedMediaItem.Builder( MediaItem.fromUri(audioUri)) .build(); EditedMediaItemSequence backgroundAudioSequence = new EditedMediaItemSequence( ImmutableList.of(backgroundAudio), /* isLooping= */ true); // Loop audio track through duration of videoSequence 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 compatibles
Voici une liste non exhaustive des cas d'utilisation dans lesquels l'API Transformer compatibles avec les compositions:
- Combinaison séquentielle des assets audio, image et vidéo. Cependant, tous les éléments d'une séquence doivent avoir les mêmes pistes. Par exemple, vous ne pouvez pas avoir une séquence qui contient un fichier audio uniquement, suivi d’un fichier vidéo.
- Ajouter une piste audio d'arrière-plan à un élément vidéo
- Ajouter des effets à une composition
- Mise en correspondance des tons entre l'entrée HDR et la 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 les
Transformer.start()
De plus, les opérations suivantes ne sont pas encore prises en charge lorsque vous utilisez
Compositions:
- Lancement de la lecture d'un
EditedMediaItemSequence
avec un décalage. - Pistes audio ou vidéo en fondu enchaîné
Demandes de fonctionnalités
Si vous avez des demandes de fonctionnalités pour l'API Transformer, signalez-le sur la Dépôt GitHub Media3