Streaming de Mídia no Android! - Exoplayer (Natan Ximenes)
-
Upload
concrete -
Category
Technology
-
view
49 -
download
5
Transcript of 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.
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
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??
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.
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)
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.
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
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