Article
Développement mobile
27.6.2014
Perturbation continuum temporel
4 minutes
Temps d'un café
ExoPlayer: Le nouveau lecteur multimédia Android
ExoPlayer: Le nouveau lecteur multimédia Android
Remy Stère
Note : Ce contenu a été créé avant que Fabernovel ne fasse partie du groupe EY, le 5 juillet 2022.

Durant une session de questions-réponses sur Android (Fireside chat), ExoPlayer a été mentionné pour la première fois : il s’agit du lecteur vidéo actuellement utilisé dans les applications Android YouTube et Google Films. Le développeur présent a précisé qu’il serait disponible “bientôt”. Comme Fabernovel travaille sur de nombreaux projets multimédia, nous étions impatients d’en apprendre plus. Google a tenu parole et a publié ExoPlayer hier, accompagné d’une brève introduction aux concepts mis en jeu.

Ce qu’est ExoPlayer

MediaPlayer, le lecteur multimedia utilisé par défaut sur Android, est d’architecture très monolithique : on lui donne le chemin d’accès au contenu que l’on souhaite lire (par exemple une URL), et on le laisse gérer le contenu du mieux qu’il peut. Cela rend son intégration très simple, mais il est peu extensible.

Depuis Jelly Bean (4.1), Android possède des APIs de bas niveau pour la manipulation de contenu, telles que MediaExtractorMediaCodec et MediaCrypto. Cela signifie que vous pouvez désormais développer votre propre lecteur video. Mais cela signifie également que vous devez partir de rien, ce qui constitue un investissement important. Par ailleurs, cela limite la compatibilité de votre application aux appareils utilisant au moins Jelly Bean. Cela exclut (en juin 2014) 28% d’utilisateurs potentiels.

ExoPlayer se veut à mi-chemin entre ces deux extrêmes. Il inclut une implémentation pour chacune des différentes briques de logique du lecteur (le réseau, la gestion du buffer, l’extraction des frames, le décodage, et le rendu), mais le développeur est libre à chaque étape d’y substituer son propre composant.

Cela procure une grande flexibilité. Ainsi, si l’on souhaite gérer un nouveau format (et inclure son propre codec), ou bien ajouter de la gestion de droits (DRM) afin de protéger son contenu, il est possible de le faire sans pour autant re-développer un lecteur vidéo en entier.

Ce que n’est pas ExoPlayer

ExoPlayer ne modifie que les couches basses du lecteur. Si l’on remplace dans une application existante MediaPlayer par ExoPlayer, l’utilisateur ne distinguera pas de changement visuel.

Cela signifie également qu’ExoPlayer n’apporte pas de fonctionnalités côté utilisateur telles que la gestion du plein écran (qui aurait été un ajout bienvenu).

Fonctionnalités

ExoPlayer gère le DASH et le Smooth Streaming, deux techniques de streaming avec débit adaptatif (la qualité de la video s’adapte aux ressources disponibles côté client, principalement la bande passante et la vitesse processeur).

Cette nouvelle architecture permet aussi d’ajouter des DRM facilement. Les exemples fournis par Google montrent comment inclure leur solution Widevine.

Ce même exemple montre aussi comment donner à l’utilisateur la possibilité de changer de canal vidéo ou audio, sous réserve que vous ajoutiez les éléments nécessaires dans l’interface.

Enfin, ce pipeline donne aussi les moyens d’améliorer les performances. Étant donné qu’il est possible de travailler chaque brique indépendamment, vous pouvez corriger les goulots d’étranglement que vous constatez. Selon Google, l’intégration d’ExoPlayer dans Play Films leur a permis de réduire la latence au démarrage de la lecture de 65% et le rebuffering de 40%.

Intégration

La bonne nouvelle est qu’il n’est pas nécessaire d’attendre la sortie d’Android L pour profiter d’ExoPlayer ! Le lecteur ne fait pas non plus partie de la librairie de support mais est un projet à part. Vous pouvez l’intégrer à vos applications dès maintenant.

Votre application devra exiger un niveau d’API 9 minimum (Gingerbread), qui couvre 99.2% du parc Android actuel.

Comme mentionné précédemment, Google fournit un projet d’exemple sur la page Github du projet. Google a aussi mis à jour sa documentation.

Conclusion

Pour une annonce passée relativement inaperçue, cette nouveauté a particulièrement attiré notre attention. Dans les semaines à venir, nous allons nous intéresser de près aux nouvelles fonctionnalités, comme la possibilité d’utiliser de nouveaux formats multimédia et codecs, de basculer entre différentes pistes audio ou la gestion de droits. Ce projet étant actuellement déjà utilisé dans les applications YouTube et Play Films, nous nous attendons à ce qu’il soit mature et stable. Notre seul regret pour l’instant est que les évolutions se limitent aux couches basses, au lieu de profiter de cette nouvelle version pour ajouter de nouvelles fonctionnalités pour les utilisateurs.

No items found.
Pour aller plus loin :