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.
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.
Links úteis
- Central para desenvolvedores de mídia
- Documentos do
ExoPlayer
- Guia de migração
- AndroidX Media3 no GitHub (em inglês)
- App de exemplo de sessão de mídia Media3 (link em inglês)
- App de exemplo Universal Android Music Player (link em inglês)