Introducción a Jetpack Media3

Jetpack Media3 es el nuevo hogar de las bibliotecas multimedia que permite que las apps para Android muestren experiencias visuales y de audio enriquecidas. Media3 ofrece una arquitectura simple con potentes opciones de personalización, confiabilidad y optimizaciones basadas en las capacidades del dispositivo para abstraer la complejidad que conlleva la fragmentación.

En este documento, se proporciona una introducción a las APIs clave para implementar casos de uso de reproducción y edición con Media3.

Componentes de reproducción

Media3 ofrece varios componentes clave para casos de uso de reproducción. Las clases que componen estos componentes te resultarán familiares si trabajaste con bibliotecas multimedia de Android anteriores.

En el siguiente diagrama, se muestra cómo se unen estos componentes en una app típica.

Los diferentes componentes de una app de música que usa Media3 se conectan entre sí de varias maneras simples debido a que comparten interfaces y clases.
Figura 1: Componentes de la app de música

El reproductor multimedia

Un reproductor multimedia es un componente de tu app que permite la reproducción de archivos multimedia. En Media3, encontrarás lo siguiente:

Clase Description Nota sobre la implementación
Player Player es una interfaz que define las capacidades tradicionales de alto nivel para un reproductor multimedia, como la capacidad de reproducir, pausar y buscar. En Media3, la interfaz Player es una API común que implementan o usan varios componentes, como MediaSession y MediaController.
ExoPlayer ExoPlayer es la implementación predeterminada de la interfaz Player en Media3.

Más información sobre Media3 ExoPlayer

La sesión multimedia

Una sesión multimedia proporciona una forma universal de interactuar con un reproductor multimedia. Esto permite que una app anuncie la reproducción de contenido multimedia a fuentes externas y reciba solicitudes de control de reproducción de fuentes externas. En Media3, encontrarás lo siguiente:

Clase Description Nota sobre la implementación
MediaSession Las sesiones multimedia permiten que tu app interactúe con un reproductor de audio o video. Publicitan la reproducción de contenido multimedia de forma externa y reciben comandos de reproducción de fuentes externas. En Media3, un MediaSession necesita un Player para ejecutar comandos y obtener el estado actual.
MediaSessionService El MediaSessionService contiene una sesión multimedia y su reproductor asociado en un servicio independiente del Activity principal de tu app para facilitar la reproducción en segundo plano.
MediaController Por lo general, la clase MediaController se usa para enviar comandos desde fuera de la app, por ejemplo, desde otras apps o el propio sistema. Los comandos se envían al Player subyacente del MediaSession asociado. La clase MediaController implementa la interfaz Player, pero cuando se llama a un método, el comando se envía al MediaSession conectado. Las apps cliente, como Asistente de Google, pueden usar MediaController para controlar la reproducción en una sesión conectada.
MediaLibraryService Un MediaLibraryService es similar a un MediaSessionService, con la excepción de que incluye API adicionales para que puedas entregar tu biblioteca de contenido a apps cliente.
MediaBrowser La clase MediaBrowser permite al usuario navegar por la biblioteca de contenido de una app de música y seleccionar qué elementos reproducir. La clase MediaBrowser implementa las interfaces MediaController y Player. Al igual que MediaController, las apps cliente, como Android Auto, suelen implementar MediaBrowser.

Más información sobre Media3 de MediaSession

Los componentes de la IU

Media3 proporciona componentes predeterminados de la IU para ver videos y controlar la reproducción.

Clase Description Nota sobre la implementación
PlayerView Una View predeterminada para mostrar los controles de video y reproducción Se conecta a ExoPlayer, MediaController o cualquier otro Player personalizado.

Más información sobre la IU de Media3

Edita los componentes

Media3 incluye las APIs de Transformer para casos de uso de edición de contenido multimedia, incluidos los siguientes:

  • Procesamiento de audio y video, como agregar filtros y efectos
  • Control de formatos especiales, como video HDR y video en cámara lenta
  • Composición, como la combinación de varios archivos de entrada
  • Exporta el resultado final a un archivo
Clase Description Nota sobre la implementación
Transformer Usa la clase Transformer para iniciar y detener las transformaciones y para verificar las actualizaciones del progreso de una transformación en ejecución.
Effects Un objeto Effects es una colección de efectos de audio y video que se aplican a un elemento multimedia.
EditedMediaItem Una EditedMediaItem representa un elemento multimedia que se debe procesar y las ediciones que se le aplican. Puedes usar ExoPlayer para obtener una vista previa de los efectos agregados a un elemento multimedia antes de comenzar el proceso de exportación.

Más información sobre Media3 Transformer

Video introductorio

Mira el siguiente video para obtener una introducción a Media3 de los ingenieros que lo crearon.