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.