Top Banner
Coders on Beers - Android Janeiro 2018
32

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

Jan 22, 2018

Download

Technology

concrete
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Streaming de Mídia no Android! - Exoplayer (Natan Ximenes)

Coders on Beers - Android

Janeiro 2018

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

STREAMING DE MÍDIA NO ANDROID!?

DON'T PANIC!

Prazer, Exoplayer!

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

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

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

O que vamos abordar??

● Introdução...

● Entendendo streaming de conteúdo

● Conhecendo o Exoplayer

● Exemplo de uso

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

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

Introdução

Page 6: Streaming de Mídia no Android! - Exoplayer (Natan Ximenes)
Page 7: Streaming de Mídia no Android! - Exoplayer (Natan Ximenes)

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

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

YouTubedentre todos os serviços, vamos destacar o

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

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

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

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??

Page 11: Streaming de Mídia no Android! - Exoplayer (Natan Ximenes)
Page 12: Streaming de Mídia no Android! - Exoplayer (Natan Ximenes)

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

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

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.

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

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

Entendendo streaming de conteúdo

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

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

Page 16: Streaming de Mídia no Android! - Exoplayer (Natan Ximenes)
Page 17: Streaming de Mídia no Android! - Exoplayer (Natan Ximenes)

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.

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

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

Conhecendo o Exoplayer

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

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)

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

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)

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

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

Conhecendo o Exoplayer

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

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);

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

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.

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

E finalmente, o Exoplayer!

Como funciona

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

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.

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

Criando uma instância do exoplayer...

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

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

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

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

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

Conhecendo o Exoplayer

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

PARTIU ANDROID STUDIO!

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

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

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

MUITO OBRIGADO!

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

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