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

Post on 22-Jan-2018

50 views 5 download

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.

natanximenes29@gmail.com

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