Edición de varios recursos

Con Transformer, puedes combinar varios elementos multimedia, como videos, imágenes y archivos de audio para crear un Composition.

Cómo exportar una composición

Para aplicar transformaciones, sigue estos pasos: (como efectos o recortes de ediciones) a un MediaItem, debes crear un EditedMediaItem para representar el recurso al que se le aplicaron las transformaciones.

Los objetos EditedMediaItem se pueden concatenar para crear un EditedMediaItemSequence Por ejemplo, puedes crear un EditedMediaItemSequence con dos elementos videos. Los elementos dentro de un EditedMediaItemSequence se ordenan de forma secuencial y no se superpongan en el tiempo.

Un Composition es la combinación de uno o más EditedMediaItemSequence. objetos. Todos los objetos EditedMediaItemSequence de Composition se mezclan lo que permite combinar recursos de audio y video.

Los objetos Composition se pueden exportar con Transformer.

Este es un ejemplo de cómo crear y exportar un activo de video que consta de dos Clips de video editados y superpuestos con una pista de 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);

Ejemplos de casos de uso admitidos

Esta es una lista no exhaustiva de los casos de uso en los que la API de Transformer admite con composiciones:

  • Combinar elementos de audio, imagen y video en secuencia. Sin embargo, todos los elementos de una secuencia deben tener las mismas pistas. Por ejemplo, no puedes tener una secuencia que contenga un archivo de solo audio, seguido de un archivo de video.
  • Agregar audio de fondo a un activo de video
  • Cómo agregar efectos a una composición
  • Tono de asignación de entrada HDR a SDR para generar salida de SDR de mejor calidad visual.

Limitaciones actuales

Las secuencias dentro de una composición deben cumplir con las condiciones que se describen en Transformer.start() Además, aún no se admiten las siguientes operaciones cuando se trabaja con Composiciones:

  • Inicia la reproducción de un objeto EditedMediaItemSequence con un desplazamiento.
  • Fundido cruzado con pistas de audio o video

Solicitudes de funciones

Si tienes alguna solicitud de funciones para la API de Transformer, informa un problema en el Repositorio de Media3 en GitHub.