Introdução ao Jetpack Media3

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

Este documento apresenta as principais APIs para implementar casos de uso de reprodução e edição com o Media3.

Componentes de reprodução

O 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ídia que usa o 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 media player é um componente do app que permite a reprodução de arquivos de mídia. Em "Media3", você encontra:

Classe Descrição Observação sobre a implementação
Player Player é uma interface que define os recursos tradicionais de alto nível para um media player, como a capacidade de reproduzir, pausar e procurar. No 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 no 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 fontes externas. Em "Media3", você encontra:

Classe Descrição 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 reprodução de fontes externas. No Media3, uma MediaSession precisa de uma Player para executar comandos e obter o estado atual.
MediaSessionService O MediaSessionService armazena 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 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, a MediaController envia 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 um MediaSessionService, exceto por incluir APIs adicionais para que você possa enviar 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 serão reproduzidos. A classe MediaBrowser implementa as interfaces MediaController e Player. Assim como MediaController, apps clientes como o Android Auto geralmente implementam MediaBrowser.

Saiba mais sobre o Media3 MediaSession

Os componentes da interface

O Media3 oferece componentes de interface padrão para assistir vídeos e controlar a reprodução.

Classe Descrição Observação sobre a implementação
PlayerView Um View padrão para mostrar controles de vídeo e reprodução. Faz a conexão com ExoPlayer, MediaController ou qualquer outro Player personalizado.

Saiba mais sobre a interface do 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 adicionar filtros e efeitos
  • Processamento de formatos especiais, como vídeo HDR e em câmera lenta
  • Composição, como a combinação de vários arquivos de entrada
  • Como exportar a saída final para um arquivo
Classe Descrição Observação sobre a implementação
Transformer Use a classe Transformer para iniciar e interromper transformações e verificar 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 a serem aplicadas a ele. Use ExoPlayer para conferir 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 o vídeo abaixo para conhecer o Media3 com os engenheiros que o criaram.