Utilizzando 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 di taglio) a un MediaItem, devi creare un
EditedMediaItem
per rappresentare l'asset a cui sono state applicate le trasformazioni.
Gli oggetti EditedMediaItem possono quindi essere concatenati per creare un
EditedMediaItemSequence.
Ad esempio, puoi creare un EditedMediaItemSequence con due video modificati. Gli elementi all'interno di un EditedMediaItemSequence sono ordinati in sequenza e
non si sovrappongono nel tempo.
Un Composition è la combinazione di uno o più oggetti EditedMediaItemSequence. Tutti gli oggetti EditedMediaItemSequence in Composition vengono combinati
insieme, consentendoti di combinare asset video e audio.
Gli oggetti Composition possono essere esportati utilizzando Transformer.
Ecco un esempio di creazione ed esportazione di un asset video composto da due clip video modificati, sovrapposti a una traccia audio:
Kotlin
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() transformer.start(composition, filePath)
Java
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(); 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 che l'API Transformer supporta con le composizioni:
- Combinazione sequenziale di asset audio, immagine e video.
- Aggiunta di audio di sottofondo a una risorsa video.
- Aggiunta di effetti a una composizione.
- Mappatura della tonalità dell'input HDR in SDR per generare un output SDR con una migliore qualità visiva.
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 lavori con le
composizioni:
- Dissolvenza incrociata di tracce video o audio
Richieste di funzionalità
Se hai richieste di funzionalità per l'API Transformer, segnala un problema nel repository GitHub di Media3.