Com ele, é possível combinar vários recursos de mídia, como vídeos,
imagens e arquivos de áudio para criar um Composition
.
Como exportar uma composição
aplicar transformações;
(como efeitos ou edições de corte) a uma MediaItem
, crie uma
EditedMediaItem
para representar o recurso que recebeu as transformações.
Os objetos EditedMediaItem
podem então ser concatenados para criar um
EditedMediaItemSequence
.
Por exemplo, é possível criar uma EditedMediaItemSequence
com duas métricas
vídeos. Os itens em uma EditedMediaItemSequence
são ordenados sequencialmente e
não se sobreponham no tempo.
Um Composition
é a combinação de um ou mais EditedMediaItemSequence
objetos. Todos os objetos EditedMediaItemSequence
no Composition
são mistos
permitindo que você combine recursos de vídeo e áudio.
Os objetos Composition
podem ser exportados usando o Transformer.
Este é um exemplo de como criar e exportar um recurso de vídeo que consiste em dois clipes de vídeo editados, sobrepostos por uma faixa de áudio:
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);
Exemplos de casos de uso com suporte
Esta é uma lista com alguns exemplos de casos de uso em que a API Transformer compatível com composições:
- Combinar recursos de áudio, imagem e vídeo de forma sequencial. No entanto, todos os itens em sequência devem ter as mesmas faixas. Por exemplo, não é possível ter uma sequência que contenha um arquivo somente de áudio, seguido por um arquivo de vídeo.
- Adicionar áudio em segundo plano a um recurso de vídeo.
- Adicionar efeitos a uma composição.
- Mapeamento de tons da entrada HDR para SDR para gerar uma saída SDR com melhor qualidade visual.
Limitações atuais
As sequências em uma composição devem atender às condições descritas em
Transformer.start()
Além disso, as seguintes operações ainda não têm suporte ao trabalhar com
Composições:
- Inicia a reprodução de uma
EditedMediaItemSequence
com deslocamento. - Fazer crossfading de faixas de vídeo ou áudio
Solicitações de recurso
Se você tem alguma solicitação de recurso para a API Transformer, registre um problema no Repositório da Media3 do GitHub (em inglês).