Diffusion en direct d'EXOPlayer – Implémentation et conseils utiles
Publié: 2018-06-08La lecture de musique et de vidéos à l'aide de la diffusion en direct est une activité importante pour les appareils Android. YouTube est l'une des plateformes les plus puissantes pour le partage de contenu vidéo. Par conséquent, vous pouvez acheter des abonnés aux chaînes YouTube pour vous connecter avec plus de personnes. Par conséquent, il existe de nombreuses possibilités pour les utilisateurs de le faire, la plupart en open source. En raison de leur large gamme, il est parfois difficile de choisir le meilleur. Pourtant, il existe une certaine façon de doter votre projet des meilleures installations. Dans cet article, nous allons partager notre opinion sur le service aux joueurs à choisir et pourquoi. Laissez-nous vous présenter le monde des possibilités de streaming illimitées, où le MediaPlayer natif reste l'un des plus populaires. Cependant, il est également apparu un nouveau joueur de champ. ExoPlayer, avec son streaming en direct EXOPlayer, a un plus large éventail de fonctions et est prêt à devenir votre prochain favori.
Bref aperçu
En 2014, la mise en œuvre de la bibliothèque Google ExoPlayer pour un lecteur vidéo avec contrôle personnalisé et « exo live stream » était une idée brillante. Le MediaPlayer natif intégré a prouvé son incohérence dans un domaine aussi important que le comportement stable et fiable sur différents appareils. Son caractère capricieux associé à la lourdeur du code et à une politique de performances sans compromis l'ont rendu célèbre parmi les experts. Au contraire, le tout nouveau ExoPlayer, construit sur la base des API multimédias de bas niveau d'Android, assurait les meilleures possibilités de streaming musical et vidéo.
La première et principale raison de sa sortie était, bien sûr, la mise en œuvre de HTTP Live Streaming (HLS) – un protocole de diffusion multimédia développé par Apple. Dans celui-ci, le contenu vidéo se compose de fragments chargés en temps réel et avec un taux de transfert de bits adaptatif. C'est ainsi que la diffusion en direct d'ExoPlayer est devenue une alternative entièrement personnalisable aux API MediaPlayer natives, fournissant une API pratique pour diffuser de la vidéo et de l'audio sur tous les appareils. Maintenant, il est utilisé par des milliers d'applications avec des noms de célébrités tels que BBC inclus.
Alternatives (et pourquoi vous ne devriez pas les choisir)
Bien sûr, ExoPlayer a un certain nombre de concurrents plutôt réussis. Ils comprennent des services bien connus tels que :
- Viméo
- Vitamio;
- LibVLC.
Cependant, on peut maintenant affirmer avec certitude qu'ExoPlayer est bien meilleur que n'importe lequel d'entre eux. Malgré son nombre impressionnant d'abonnés, Vimeo manque de flexibilité, car le contenu est stocké exclusivement sur ses serveurs, avec un lien iframe prévu pour la lecture dans WebView. Cela réduit considérablement les performances de l'application. Basé sur la bibliothèque populaire FFmpeg et possédant de nombreuses fonctionnalités utiles, Vitamio a gagné en popularité. Cependant, il s'agit d'un service non gratuit, donc peu de gens sont prêts à l'utiliser. LibVLC est plutôt limité dans ses fonctionnalités, car il ne gère que les projets prenant en charge NDK. C'est pourquoi ExoPlayer est le service le plus populaire de ce type de nos jours.
Qu'est-ce que le positif ?
Comme tout service, ExoPlayer a ses avantages et ses inconvénients. Ses principaux avantages incluent :
- implémentation d'exoplayer HLS avec toutes ses fonctionnalités avancées, telles que la gestion des bogues, etc.
- démarrage facile ;
- Base Java, qui permet la possibilité d'un débogage réussi ;
- variété de formats;
- prise en charge complète du cryptage commun Widevine pour Android 4.4 et versions ultérieures.
- des composants de contrôle entièrement personnalisables ;
- une possibilité de jouer de l'audio et de la vidéo dans un flux ;
- prise en charge des sous-titres ;
- Prise en charge du SDK Google Cast, qui lui permet de fonctionner avec la télévision ou le système audio ;
- Utilisation de MediaSource.
Ce dernier permet de configurer non seulement le flux HLS exoplayer, mais aussi DASH (DashMediaSource) et SmoothStreaming (SsMediaSource). Il permet également de tels composants de diffusion en direct EXOPlayer en tant que sous-titres à chargement latéral, ainsi que la lecture des séquences vidéo. Une autre fonctionnalité intéressante qu'il possède est le tout nouveau PlayerNotificationManager, qui permet à l'utilisateur d'obtenir des notifications de lecture pour contrôler votre streaming vidéo ou audio exo. Avec eux, vous pouvez facilement avancer, reculer, passer à la piste suivante, etc. Pour créer MediaSource pour le streaming vidéo HLS, vous devez effectuer ces actions simples :

amusant getHlsMediaSource (hls : chaîne) : MediaSource {
val bandwidthMeter = DefaultBandwidthMeter()
val applicationName = Util.getUserAgent(contexte, APPLICATION_NAME)
val dataSourceFactory = DefaultDataSourceFactory (contexte, applicationName, bande passante)
val factory = HlsMediaSource.Factory(dataSourceFactory)
return factory.createMediaSource(Uri.parse(hls))
}
De plus, la bibliothèque de diffusion en direct EXOPlayer possède une gamme d'autres capacités fantastiques, telles que MergingMediaSource, ConcatenatingMediaSource, TrackSelector et LoopingMediaSource. Ils garantissent tous les performances parfaites d'un système complexe de possibilités de streaming Exo. ExoPlayer a une gamme de ces composants par défaut pour le fonctionnement de base. Cependant, il peut également utiliser de nombreuses implémentations personnalisées pour des performances non standard.
Dans l'ensemble, exo live stream gère toutes les tâches importantes, telles que le streaming vidéo avec l'identification des erreurs associées à la source du contenu, l'ajout d'un lecteur vidéo ou audio prenant en charge la plupart des formats modernes à votre application mobile ou TV dans un peu de temps etc...
Qu'est-ce que le négatif ?
Bien sûr, rien n'est parfait. La diffusion en direct d'EXOPlayer, malgré sa modernité et un certain nombre de fonctionnalités intéressantes, ne fait pas exception à cela. Ses principaux inconvénients sont les suivants :
- limites de conception;
- manque de prise en charge des versions antérieures à 16 Android ;
- une impossibilité des performances de récréation du joueur en cas de verrouillage de l'écran ;
- pas de retour arrière jusqu'à la dernière position vue.
La solution de travail pour ces derniers défis ressemble à ceci :
remplacer fun onPause() {
super .onPause()
releasePlayer()
}
version amusante privéePlayer() {
if ( simpleExoPlayer != null ) {
resumePosition = Math.max(0, simpleExoPlayer !!. contentPosition )
shouldAutoPlay = simpleExoPlayer !!. jouerQuandPrêt
simpleExoPlayer !!.release()
simpleExoPlayer = null
}
}
remplacer amusant onResume () {
super .onResume()
initPlayer()
}
amusement privé initPlayer() {
simpleExoPlayer = streamConfigurator .createExoPlayer()
…
simpleExoPlayerView. useController = vrai
simpleExoPlayerView. joueur = simpleExoPlayer
…
simpleExoPlayer ?.seekTo( resumePosition )
…
}
Cependant, ces problèmes peuvent être attribués aux particularités de l'architecture Android et de son hyperthreading, les développeurs Android pourraient avoir un peu de mal. En dehors de cela, la diffusion en direct d'ExoPlayer est un excellent choix.
Algorithme de diffusion en direct d'EXOPlayer
Les experts affirment qu'ExoPlayer est vraiment pratique et facile à utiliser, et nous sommes totalement d'accord avec cette idée. Pour commencer votre travail avec, vous devez effectuer quelques étapes simples. Ils incluent:
- ajouter ExoPlayer à votre projet sous une forme de dépendance. L'ajouter au fichier du module d'application garantira son travail pour la bibliothèque complète de diffusion en direct ExoPlayer ;
- créer une instance SimpleExoPlayer (utilisez ExoPlayerFactory pour cela);
- fixation du lecteur à la vue à la fois pour la sortie vidéo et l'entrée utilisateur facile ;
- préparation du MediaSource du lecteur à jouer.
- la libération du joueur (avec un code spécial).
Conclusion
ExoPlayer live streaming est une solution open source prête à l'emploi qui permet de résoudre de nombreux problèmes problématiques pour d'autres bibliothèques. Comme vous pouvez le voir, sa liste d'avantages et de caractéristiques positives est beaucoup plus longue que l'énumération des aspects négatifs. Probablement pour cette raison, il est utilisé dans la grande majorité des applications Android et est entièrement pris en charge par Google. En comparaison avec ses principales alternatives, il est beaucoup plus flexible et simple. Notre équipe vous conseille de commencer à l'utiliser, car ses fonctionnalités intéressantes peuvent vous faire une énorme bouillie.
