Introdução ao Jetpack Media3

O Jetpack Media3 é o novo lar de bibliotecas de mídia que permite que os apps Android mostrem experiências visuais e de áudio avançadas. A Media3 oferece uma arquitetura simples com personalização, confiabilidade e otimizações avançadas com base nos recursos do dispositivo para abstrair a complexidade da fragmentação.

Este documento apresenta uma introdução às principais APIs para implementar casos de uso de reprodução e edição com o Media3.

Componentes de reprodução

A Media3 oferece vários componentes importantes para casos de uso de reprodução. As classes que compõem esses componentes serão familiares se você já trabalhou com bibliotecas de mídia anteriores do Android.

O diagrama a seguir demonstra como esses componentes se unem em um app típico.

Os diferentes componentes de um app de música que usa Media3 se conectam
  de várias maneiras simples devido ao compartilhamento de interfaces
   e classes.
Figura 1: componentes de apps de mídia

O player de mídia

Um player de mídia é um componente do seu app que permite a reprodução de arquivos de mídia. Na Media3, você encontra o seguinte:

Aula Description Observação sobre a implementação
Player A Player é uma interface que define os recursos tradicionais de alto nível para um player de mídia, como a capacidade de reproduzir, pausar e procurar. Na Media3, a interface Player é uma API comum implementada ou usada por vários componentes, incluindo MediaSession e MediaController, por exemplo.
ExoPlayer ExoPlayer é a implementação padrão da interface Player na Media3.

Saiba mais sobre o ExoPlayer da Media3

A sessão de mídia

Uma sessão de mídia oferece uma maneira universal de interagir com um player de mídia. Isso permite que um app anuncie a reprodução de mídia para fontes externas e receba solicitações de controle de reprodução de origens externas. Na Media3, você encontra o seguinte:

Aula Description Observação sobre a implementação
MediaSession As sessões de mídia permitem que seu app interaja com um player de áudio ou vídeo. Eles anunciam a reprodução de mídia externamente e recebem comandos de fontes externas. Na Media3, um MediaSession precisa de um Player para executar comandos e receber o estado atual.
MediaSessionService O MediaSessionService realiza uma sessão de mídia e o player associado em um serviço separado do Activity principal do app para facilitar a reprodução em segundo plano.
MediaController A classe MediaController geralmente é usada para enviar comandos de fora do seu app, por exemplo, de outros apps ou do próprio sistema. Os comandos são enviados para o Player subjacente do MediaSession associado. A classe MediaController implementa a interface Player, mas ao chamar um método, o comando é enviado para o MediaSession conectado. Apps clientes, como o Google Assistente, podem usar MediaController para controlar a reprodução em uma sessão conectada.
MediaLibraryService Um MediaLibraryService é semelhante a uma MediaSessionService, exceto pelo fato de incluir outras APIs para que você possa disponibilizar sua biblioteca de conteúdo para apps clientes.
MediaBrowser A classe MediaBrowser permite que o usuário navegue pela biblioteca de conteúdo de um app de mídia e selecione quais itens reproduzir. A classe MediaBrowser implementa as interfaces MediaController e Player. Da mesma forma que o MediaController, apps clientes, como o Android Auto, geralmente implementam MediaBrowser.

Saiba mais sobre a Media3 MediaSession

Os componentes de interface

A Media3 fornece componentes de interface padrão para exibir vídeos e controlar a reprodução.

Aula Description Observação sobre a implementação
PlayerView Um View padrão para mostrar o vídeo e os controles de reprodução. Conecta-se a ExoPlayer, MediaController ou qualquer outro Player personalizado.

Saiba mais sobre a interface Media3

Como editar componentes

A Media3 inclui as APIs Transformer para casos de uso de edição de mídia, incluindo:

  • processamento de áudio e vídeo, como a adição de filtros e efeitos;
  • Processamento de formatos especiais, como vídeo HDR e vídeo em câmera lenta
  • Composição, como combinar vários arquivos de entrada
  • Exportar a saída final para um arquivo
Aula Description Observação sobre a implementação
Transformer Use a classe Transformer para iniciar e interromper transformações e verificar se há atualizações de progresso em uma transformação em execução.
Effects Um objeto Effects é uma coleção de efeitos de áudio e vídeo para aplicar a um item de mídia.
EditedMediaItem Um EditedMediaItem representa um item de mídia a ser processado e as edições aplicadas a ele. Você pode usar ExoPlayer para visualizar os efeitos adicionados a um item de mídia antes de iniciar o processo de exportação.

Saiba mais sobre a Media3 Transformer.

Vídeo de introdução

Assista ao vídeo abaixo para ver uma introdução ao Media3 feita pelos engenheiros que o criaram.