Edição de vários recursos

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).