Modifica di più asset

Con Transformer, puoi combinare più asset multimediali, come video, immagini e file audio per creare un Composition.

Esportare una composizione

Per applicare le trasformazioni (come effetti o modifiche per tagliare) a MediaItem, devi creare uno EditedMediaItem per rappresentare l'asset a cui sono applicate le trasformazioni.

EditedMediaItem oggetti possono quindi essere concatenati per creare un EditedMediaItemSequence Ad esempio, puoi creare una EditedMediaItemSequence con due modifiche video. Gli elementi all'interno di un EditedMediaItemSequence vengono ordinati in sequenza e non si sovrappongano nel tempo.

Un Composition è la combinazione di uno o più EditedMediaItemSequence di oggetti strutturati. Tutti gli oggetti EditedMediaItemSequence in Composition sono misti per combinare asset video e audio.

Composition oggetti possono essere esportati utilizzando Transformer.

Ecco un esempio di creazione ed esportazione di un asset video composto da due video clip modificati, a cui è sovrapposta una traccia 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(
  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);

Esempi di casi d'uso supportati

Questo è un elenco non esaustivo di casi d'uso per cui l'API Transformer supporta con le composizioni:

  • Combinazione sequenziale di asset audio, immagine e video. Tuttavia, tutti gli elementi in una sequenza devono avere le stesse tracce. Ad esempio, non puoi avere una sequenza che contiene un file solo audio, seguito da un file video.
  • Aggiunta dell'audio di sottofondo a un asset video.
  • Aggiunta di effetti a una composizione.
  • Input HDR per la mappatura dei toni su SDR per generare una migliore qualità visiva in SDR.

Limitazioni attuali

Le sequenze all'interno di una composizione devono soddisfare le condizioni descritte in Transformer.start() Inoltre, le seguenti operazioni non sono ancora supportate quando si utilizza Composizioni:

  • Avvio della riproduzione di un EditedMediaItemSequence con un offset.
  • Dissolvenza incrociata tra tracce video o audio

Richieste di funzionalità

Se hai richieste di funzionalità per l'API Transformer, segnala un problema nella Repository GitHub di Media3