EXOPlayer Live Streaming - Implementação e dicas úteis
Publicados: 2018-06-08Reproduzir música e vídeos com a ajuda de streaming ao vivo é uma atividade importante para dispositivos Android. O YouTube é uma das plataformas mais poderosas para compartilhar conteúdo de vídeo. Portanto, você pode comprar assinantes de canais do YouTube para se conectar com mais pessoas. Conseqüentemente, existem inúmeras possibilidades para os usuários fazerem isso, a maioria delas de código aberto. Devido à sua grande variedade, às vezes é difícil escolher o melhor. No entanto, existe uma certa maneira de fornecer as melhores instalações ao seu projeto. Neste artigo, vamos compartilhar nossa opinião sobre qual serviço de jogador escolher e por quê. Deixe-nos apresentar a você o mundo de possibilidades ilimitadas de streaming, onde o MediaPlayer nativo continua sendo um dos mais populares. No entanto, também apareceu um novo jogador de campo. O ExoPlayer, com sua transmissão ao vivo EXOPlayer, tem um escopo mais amplo de funções e está pronto para se tornar seu próximo favorito.
Breve Visão Geral
Em 2014, a implementação da biblioteca ExoPlayer do Google para um reprodutor de vídeo com o controle personalizado operacional e 'transmissão ao vivo exo' foi uma ideia brilhante. O MediaPlayer nativo integrado provou sua inconsistência em um assunto tão importante como o comportamento estável e confiável em diferentes dispositivos. Seu capricho, junto com o peso do código e política de desempenho intransigente, tornou-o notório entre os especialistas. Pelo contrário, o ExoPlayer recém-lançado, construído com base nas APIs de mídia de baixo nível do Android, garantiu as melhores possibilidades de streaming de música e vídeo.
O primeiro e principal motivo para seu lançamento foi, obviamente, a implementação de HTTP Live Streaming (HLS) - um protocolo para transmissão de mídia desenvolvido pela Apple. Nele, o conteúdo de vídeo consiste em fragmentos carregados em tempo real e com taxa de transferência de bits adaptável. É assim que o streaming ao vivo do ExoPlayer se tornou uma alternativa totalmente personalizável às APIs nativas do MediaPlayer, fornecendo uma API conveniente para streaming de vídeo e áudio em todos os dispositivos. Agora ele é usado por milhares de aplicativos com nomes de celebridades como o BBC incluído.
Alternativas (e por que você não deve escolhê-las)
Claro, o ExoPlayer tem vários concorrentes bastante bem-sucedidos. Eles incluem serviços bem conhecidos como:
- Vimeo
- Vitamio;
- LibVLC.
No entanto, agora podemos afirmar com certeza que o ExoPlayer é muito melhor do que qualquer um deles. Apesar do número impressionante de assinantes, o Vimeo carece de flexibilidade, pois o conteúdo é armazenado exclusivamente em seus servidores, com um link iframe fornecido para reprodução em WebView. Isso reduz significativamente o desempenho do aplicativo. Sendo baseado na popular biblioteca FFmpeg e possuindo muitos recursos úteis, o Vitamio ganhou muita popularidade. No entanto, é um serviço não gratuito, portanto, poucas pessoas estão prontas para usá-lo. LibVLC é bastante restrito em sua funcionalidade, uma vez que lida apenas com projetos com suporte NDK. É por isso que o ExoPlayer é o serviço mais popular desse tipo atualmente.
O que é positivo?
Como qualquer serviço, o ExoPlayer tem suas vantagens e desvantagens. Seus principais prós incluem:
- implementação do exoplayer HLS com todos os seus recursos avançados, como manipulação de bugs etc .;
- início fácil;
- Base Java, que permite a possibilidade de depuração com sucesso;
- variedade de formatos;
- suporte total da criptografia comum Widevine para Android 4.4 e superior.
- componentes de controle que são totalmente personalizáveis;
- a possibilidade de reproduzir áudio e vídeo em um stream;
- suporte de legenda;
- Suporte a Google Cast SDK, que permite trabalhar com TV ou sistema de som;
- Uso do MediaSource.
Este último permite configurar não apenas o fluxo HLS do exoplayer, mas também DASH (DashMediaSource) e SmoothStreaming (SsMediaSource). Ele também permite componentes de streaming ao vivo EXOPlayer, como legendas carregadas lateralmente, bem como a reprodução das sequências de vídeo. Um recurso mais interessante que possui é o PlayerNotificationManager recém-lançado, que permite ao usuário obter notificações de reprodução para controlar o streaming de vídeo ou áudio exo. Com eles, você pode avançar, retroceder, passar para a próxima faixa, etc. Para criar MediaSource para streaming de vídeo HLS, você precisa realizar ações simples:

fun getHlsMediaSource (hls: String): MediaSource {
val bandwidthMeter = DefaultBandwidthMeter ()
val applicationName = Util.getUserAgent (contexto, APPLICATION_NAME)
val dataSourceFactory = DefaultDataSourceFactory (context, applicationName, bandwidthMeter)
val factory = HlsMediaSource.Factory (dataSourceFactory)
return factory.createMediaSource (Uri.parse (hls))
}
Além disso, a biblioteca de streaming ao vivo EXOPlayer tem uma variedade de outras capacidades fantásticas, como MergingMediaSource, ConcatenatingMediaSource, TrackSelector e LoopingMediaSource. Todos eles garantem o desempenho perfeito de um complexo sistema de possibilidades de streaming Exo. O ExoPlayer tem uma variedade desses componentes por padrão para o funcionamento básico. No entanto, ele também pode fazer uso de várias implementações personalizadas para desempenho fora do padrão.
Resumindo, o exo live stream lida com todas as tarefas importantes, como streaming de vídeo com a identificação de erros associados à fonte do conteúdo, adicionando um reprodutor de vídeo ou áudio que suporte a maioria dos formatos modernos para seu aplicativo móvel ou de TV em um pouco tempo etc.
O que é negativo?
Claro, nada é perfeito. A transmissão ao vivo do EXOPlayer, apesar de sua modernidade e uma série de recursos interessantes, não é exceção a isso. Suas principais desvantagens são as seguintes:
- limitações de design;
- falta de suporte para versões anteriores a 16 Android;
- impossibilidade de desempenho recreativo do jogador em caso de bloqueio de tela;
- sem retrocesso para a última posição visualizada.
A solução de trabalho para os últimos desafios é a seguinte:
override fun onPause () {
super .onPause ()
releasePlayer ()
}
private fun releasePlayer () {
if ( simpleExoPlayer ! = null ) {
resumePosition = Math.max (0, simpleExoPlayer !!. contentPosition )
shouldAutoPlay = simpleExoPlayer !!. playWhenReady
simpleExoPlayer !!. release ()
simpleExoPlayer = null
}
}
override fun onResume () {
super .onResume ()
initPlayer ()
}
private fun initPlayer () {
simpleExoPlayer = streamConfigurator .createExoPlayer ()
…
simpleExoPlayerView. useController = true
simpleExoPlayerView. player = simpleExoPlayer
…
simpleExoPlayer ? .seekTo ( resumePosition )
…
}
No entanto, esses problemas podem ser atribuídos às peculiaridades da arquitetura Android e seu hyperthreading, os desenvolvedores Android podem ter um pouco de dificuldade. Fora isso, a transmissão ao vivo do ExoPlayer é uma ótima escolha.
Algoritmo de EXOPlayer Live Streaming
Os especialistas afirmam que o ExoPlayer é realmente prático e fácil de usar, e concordamos totalmente com esse pensamento. Para começar seu trabalho com ele, você precisa realizar apenas algumas etapas simples. Eles incluem:
- adicionando ExoPlayer ao seu projeto em uma forma de dependência. Adicioná-lo ao arquivo do módulo de aplicativo garantirá seu funcionamento para a biblioteca de streaming ao vivo ExoPlayer completa;
- criar uma instância SimpleExoPlayer (use ExoPlayerFactory para isso);
- anexar o player à visualização para saída de vídeo e fácil entrada do usuário;
- preparação do MediaSource do player para jogar.
- a liberação do jogador (com um código especial).
Conclusões
O streaming ao vivo do ExoPlayer é uma solução de código aberto pronta que permite resolver muitos problemas problemáticos para outras bibliotecas. Como você pode ver, sua lista de vantagens e características positivas é muito mais longa do que a enumeração das negativas. Provavelmente por esse motivo, ele é usado na grande maioria dos aplicativos Android e é totalmente suportado pelo Google. Em comparação com suas principais alternativas, é muito mais flexível e simples. Nossa equipe o aconselha a começar a usá-lo, pois seus recursos interessantes podem fazer uma grande confusão em você.
