Jetpack Media3 es la nueva casa de las bibliotecas de contenido multimedia que permiten que las apps para Android muestren experiencias visuales y de audio enriquecidas. Media3 ofrece una arquitectura simple con personalización, confiabilidad y optimizaciones potentes basadas en las capacidades del dispositivo para abstraer la complejidad que conlleva la fragmentación.
En este documento, se presenta 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 de medios anteriores de Android.
En el siguiente diagrama, se muestra cómo se combinan estos componentes en una app típica.
 
  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 | Descripción | Nota de implementación | 
|---|---|---|
| Player | Playeres una interfaz que define capacidades tradicionales de alto nivel para un reproductor de medios, como la capacidad de reproducir, pausar y buscar. | En Media3, la interfaz Playeres una API común que implementan o usan varios componentes, incluidosMediaSessionyMediaController, por ejemplo. | 
| ExoPlayer | ExoPlayeres la implementación predeterminada de la interfazPlayeren Media3. | 
Obtén 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 | Descripción | Nota de implementación | 
|---|---|---|
| MediaSession | Las sesiones multimedia permiten que tu app interactúe con un reproductor de audio o video. Anuncian la reproducción de contenido multimedia de forma externa y reciben comandos de reproducción de fuentes externas. | En Media3, un MediaSessionnecesita unPlayerpara ejecutar comandos y obtener el estado actual. | 
| MediaSessionService | El MediaSessionServicecontiene una sesión multimedia y su reproductor asociado en un servicio independiente delActivityprincipal de tu app para facilitar la reproducción en segundo plano. | |
| MediaController | Por lo general, la clase MediaControllerse usa para enviar comandos desde fuera de tu app, por ejemplo, desde otras apps o el propio sistema.
      Los comandos se envían alPlayersubyacente delMediaSessionasociado. | La clase MediaControllerimplementa la interfazPlayer, pero, cuando se llama a un método,MediaControllerenvía el comando alMediaSessionconectado. Las apps cliente, como Asistente de Google, pueden usarMediaControllerpara controlar la reproducción en una sesión conectada. | 
| MediaLibraryService | Un MediaLibraryServicees similar a unMediaSessionService, excepto que incluye APIs adicionales para que puedas entregar tu biblioteca de contenido a las apps cliente. | |
| MediaBrowser | La clase MediaBrowserpermite al usuario navegar por la biblioteca de contenido de una app de música y seleccionar qué elementos reproducir. | La clase MediaBrowserimplementa las interfacesMediaControlleryPlayer. Al igual queMediaController, las apps cliente, como Android Auto, suelen implementarMediaBrowser. | 
Más información sobre Media3 MediaSession
Los componentes de la IU
Media3 proporciona componentes de IU predeterminados para ver videos y controlar la reproducción.
| Clase | Descripción | Nota de implementación | 
|---|---|---|
| PlayerView | Un Viewpredeterminado para mostrar los controles de video y reproducción. | Se conecta a ExoPlayer,MediaControllero cualquier otroPlayerpersonalizado. | 
| PlayerSurface | Un elemento componible que representa un dibujo dedicado Surfacepara mostrar video. | Se conecta a cualquier Player, pero no contiene controles de reproducción.
      Solo se usa para renderizar fotogramas y se puede cambiar de tamaño según varios tipos de
      
      ContentScale. Este y muchos otros elementos componibles se pueden encontrar en las utilidades de la IU de Compose. | 
Más información sobre la IU de Media3
Cómo editar componentes
Media3 incluye las APIs de Transformer para casos de uso de edición de medios, incluidos los siguientes:
- Procesamiento de audio y video, como agregar filtros y efectos
- Cómo controlar formatos especiales, como videos en HDR y videos en cámara lenta
- Composición, como la combinación de varios archivos de entrada
- Cómo exportar el resultado final a un archivo
| Clase | Descripción | Nota de implementación | 
|---|---|---|
| Transformer | Usa la clase Transformerpara iniciar y detener transformaciones, y para verificar las actualizaciones de progreso en una transformación en ejecución. | |
| Effects | Un objeto Effectses una colección de efectos de audio y video
      para aplicar a un elemento multimedia. | Puedes usar ExoPlayerpara obtener una vista previa de los efectos agregados a un elemento multimedia antes de iniciar el proceso de exportación. | 
| EditedMediaItem | Un EditedMediaItemrepresenta un elemento multimedia que se procesará y
      las ediciones que se le aplicará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.
Vínculos útiles
- Centro para desarrolladores de contenido multimedia
- Documentos ExoPlayer
- Guía de migración
- Media3 de AndroidX en GitHub
- App de ejemplo de sesión multimedia de Media3
- App de ejemplo de Universal Android Music Player
