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