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.