Formatos compatibles

Consulta los formatos compatibles de ExoPlayer para obtener una introducción al formatos multimedia en general. Las mismas limitaciones de carga, extracción y las transmisiones de decodificación se aplican con Transformer, aunque Transformer no es compatible Módulos de decodificador de software incluidos en ExoPlayer.

Transformer también se basa en MediaCodec para la codificación y necesita multiplexar. mux, archivos multimedia de salida, que limita los formatos de salida admitidos. Consulta Códecs de video MediaCodec para obtener más información sobre las limitaciones de codificación MediaMuxer para conocer las limitaciones que se aplican al contenedor de contenido multimedia de salida. Solo transformador archivos MP4.

De forma predeterminada, Transformer usa MediaMuxer, pero un InAppMuxer en progreso está disponible de manera opcional para evitar algunas de las limitaciones de MediaMuxer respecto a estructuras de marcos de referencia y formatos de muestra admitidos. El combinador predeterminado se convertirá en el combinador integrado en la app en una versión futura.

Compatibilidad con imágenes

Transformer usa BitmapFactory para cargar y decodificar todos los recursos de imagen, por lo que Transformer admite todos los formatos que admite BitmapFactory. Consulta Compatibilidad con imágenes para conocer los tipos de imágenes compatibles. Para los formatos de varias imágenes (p.ej., GIF), una sola imagen se muestra un marco del contenedor si se DefaultAssetLoaderFactory que se usan.

Formatos especiales

Transformer admite el manejo de entradas en formatos de medios más nuevos que proporcionan un en comparación con los formatos convencionales.

Cómo controlar videos HDR

Cada vez más dispositivos admiten videos HDR captura, lo que brinda imágenes más vívidas y precisas colores y un mayor rango de brillo.

Transformer admite la edición de videos HDR a partir de Android 13 (nivel de API 33) en dispositivos con la compatibilidad de codificación requerida. Cuando edites videos HDR, cualquier clase de GL Los efectos de video deben controlar componentes de color de punto flotante de 16 bits y BT.2020. espacio de color. HDR_MODE_KEEP_HDR es el modo predeterminado cuando se compila el Composition Si la edición HDR no es compatible, el Transformer vuelve a usar HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL.

Android admite la conversión de HDR a SDR, también conocida como asignación de tonos. 10 (nivel de API 29) en adelante en dispositivos con la decodificación y OpenGL requeridos y asistencia. Esto es útil cuando compartes contenido multimedia HDR con otras apps o servicios que por lo que no son compatibles con la transferencia de contenido HDR. Para habilitar la asignación de tonos con las llamadas de OpenGL setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) cuando crees el Composition A partir de Android 12 (nivel de API 31), MediaCodec también admite la asignación de tonos en algunos dispositivos, incluidos aquellos que ejecutan Android 13 o versiones posteriores que pueden capturar videos HDR Para habilitar el ajuste de tonos con MediaCodec llama a setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC).

Cómo procesar contenido multimedia en cámara lenta

Los videos en cámara lenta incluyen metadatos que indican la velocidad a la que cada sección de la transmisión continua. La compactación es el proceso de producir un nuevo transmisión de video por Internet basada en el video en cámara lenta, pero en las que las secciones se aceleraron o se ralenticen según los metadatos, de manera que se jueguen bien incluso en los jugadores que no aplican metadatos de cámara lenta.

Para compactar transmisiones en cámara lenta, usa el compilador setFlattenForSlowMotion. en EditedMediaItem.

Kotlin

val editedMediaItem =
    EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build()
val transformer =
    Transformer.Builder(context).addListener(transformerListener).build()
transformer.start(editedMediaItem, outputPath)

Java

EditedMediaItem editedMediaItem =
    new EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build();
Transformer transformer =
    new Transformer.Builder(context).addListener(transformerListener).build();
transformer.start(editedMediaItem, outputPath);

Esto te permite admitir videos en cámara lenta sin preocuparte por que manejan estos formatos especiales. Solo tienes que almacenar y reproducir versión plana del video en lugar del original.