Modification de plusieurs éléments

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.

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