Streaming de Mídia no Android! - Exoplayer (Natan Ximenes)

32
Coders on Beers - Android Janeiro 2018

Transcript of Streaming de Mídia no Android! - Exoplayer (Natan Ximenes)

Coders on Beers - Android

Janeiro 2018

STREAMING DE MÍDIA NO ANDROID!?

DON'T PANIC!

Prazer, Exoplayer!

Oi, eu sou o Goku Natan!

•Desenvolvedor Android @ Concrete desde 2015.

•Me aventurei como QA pouco tempo depois que entrei.

•Professor formado pelo MIT, na disciplina de FIFA 18.

•O melhor pior jogador de Street Fighter da Concrete.

[email protected]

https://github.com/Senemix29/ https://www.linkedin.com/in/natan-ximenes29

O que vamos abordar??

● Introdução...

● Entendendo streaming de conteúdo

● Conhecendo o Exoplayer

● Exemplo de uso

Quando você ouve falar sobre streaming de conteúdo, o que vem a sua cabeça??

Introdução

“streaming de conteúdo?? hmm, acho que ja usei algo do tipo...”

YouTubedentre todos os serviços, vamos destacar o

1 bilhão de horasTodo dia são assistidos o equivalente a

em vídeos na plataforma de conteúdo

presente em 88 países e em 76 idiomas

Exoplayer!E adivinha o que o app do YouTube utiliza para executar seus videos??

O YouTube é o principal case, dentre os diversos serviços que utilizam a lib do Google nos seus apps Android.

Assim, vamos conhecer um pouco mais sobre o Exoplayer??

Vamos dar uns passos para trás e entender como o streaming de conteúdo funciona...

Media Player

•Presente desde a API level 1 no Android.

•Executa audio/video provindos de: resources do app, sistema de arquivos do device ou através da rede.

•É utilizável sem a necessidade de inclusão de dependência no projeto.

Como funciona uma solução básica de distribuição de conteúdo via streaming??

Entendendo streaming de conteúdo

Como funciona o streaming de conteúdo?

Em linhas gerais, é composto por:

•Fonte provedora de conteúdo

•Servidor de mídia, que irá distribuí-las (em um ou mais protocolos de streaming)

•Cliente consumidor de conteúdo

Distribuindo conteúdo...

● Via streaming adaptativo: HLS, Dash, Smooth Streaming..- O conteúdo é transmitido em pequenos pedaços divididos de acordo

com as qualidades disponíveis, onde o cliente consome os pedaços deacordo com a largura da banda disponível naquele momento.

● Via mídia comum: Arquivos de áudio e vídeo.

- O conteúdo é transmitido sem a possibilidade de consumo de acordo

com a largura de banda.

No Android, como podemos lidar com streaming de conteúdo??

Conhecendo o Exoplayer

Lidando com execução de mídia

As principais escolhas para aplicações que utilizam áudio/vídeo são:

•Media Player (Api nativa do S.O Android)

•Exoplayer (Library open source, mantida pelo Google)

ExoPlayer

•Library open source, utilizavel a partir da API Level 16(Android 4.1).

•Executa audios/videos provindos: de resources do app; do sistema de arquivos do device; através da rede, via Dash, HlS e SS, se necessário,.

•Utilizável através da inclusão de dependência no projeto:

compile 'com.google.android.exoplayer:exoplayer:2.X.X'

(O Exoplayer é modularizado, podendo ser adicionado apenas o que for necessário para sua implementação)

beleza, mas qual das duas opções devemos escolher ??

Conhecendo o Exoplayer

Se você pretende:

•Ter controle e consistência sobre a execução de mídia através da versão do S.O;

•Executar sua mídia via Dash, HlS(sem limitações) e Smooth Streaming;

•Poder customizar e estender seu player de acordo com sua necessidade;

•Integra-lo com outras libs, como por exemplo o IMA SDK(para publicidade antes do conteúdo);

Se você pretende:

•Ter controle e consistência sobre a execução de mídia através da versão do S.O;

•Executar sua mídia via Dash, HlS(sem limitações) e Smooth Streaming;

•Poder customizar e estender seu player de acordo com sua necessidade;

•Integra-lo com outras libs, como por exemplo o IMA SDK(para publicidade antes do conteúdo);

Então, vá de Exoplayer! Se for algo mais simples, vá de MediaPlayer.

E finalmente, o Exoplayer!

Como funciona

O ExoPlayer !

Basicamente, essas 4 “classes” fazem as coisas acontecerem:

•MediaSource - define a media a ser executada e de onde executá-la

•Renderer(Audio e Video) - Renderiza os componentes do MediaSource.

•TrackSelector - Seleciona as tracks providas pelo MediaSource para serem consumidas pelo Renderer.

•LoadControl - Controla quando o MediaSource deve bufferizar mais mídia e o quanto deve bufferizar.

Criando uma instância do exoplayer...

O ExoPlayer fornece implementações default dos seus componentes, otimizando sua utilização.

Exibindo nosso Player

Temos duas opções:

•Implementar nosso layout e linkar com os callbacks do Exoplayer

•Utilizar a SimpleExoPlayerView

CustomView do Exoplayer

playerView.setPlayer(player);

linkando com nosso player

Show, vamos integrar o que a gente viu até aqui numa solução real

Conhecendo o Exoplayer

PARTIU ANDROID STUDIO!

Referências

Código do projeto:https://github.com/Senemix29/exoplayer-coders-on-beer/

Links úteis:https://google.github.io/ExoPlayer/guide.htmlhttps://developer.android.com/guide/topics/media/mediaplayer.htmlhttps://www.youtube.com/watch?v=vOzOZ7hRr00 (Exoplayer I/O 2016)https://www.youtube.com/watch?v=jAZn-J1I8Eg (Exoplayer I/O 2017)https://codelabs.developers.google.com/codelabs/exoplayer-intro

MUITO OBRIGADO!

Centro

Av. Presidente Wilson,

231 - 29º andar

(21) 2240-2030

Cidade Monções

Av. Nações Unidas,

11.541 - 3º andar

(11) 4119-0449

Savassi

Av. Getúlio Vargas, 671

Sala 800 - 8º andar

(31) 3360-8900

www.concrete.com.br