Si vous utilisez le SDK Brightcove Native Player pour Android, il est très probable que vous utilisiez actuellement la structure Google ExoPlayer pour la lecture de vos vidéos. En 2016, l'équipe de Google ExoPlayer a publié la deuxième version majeure du lecteur, en procédant à une refonte majeure du code. Nous avons alors décidé de lui donner un peu de temps avant de sauter sur le navire ExoPlayer 2, afin que le code soit plus stable au moment de la mise à jour.
En 2017, nous avons évalué ExoPlayer 2 et conclu qu'il était temps de le mettre à niveau, ce qui en fera un excellent ajout au SDK Brightcove et à ses utilisateurs.
PASSER À EXOPLAYER 2
Lors de la mise à niveau vers ExoPlayer 2, nous avons décidé de conserver les deux versions d'ExoPlayer dans le SDK de lecteur natif Brightcove pour Android, afin que vous puissiez passer au SDK v6.0.1+ avec un minimum d'effort tout en conservant l'ancien lecteur.
Vous pouvez commencer à explorer ExoPlayer 2 en modifiant votre build.gradle
pour remplacer le fichier compile project(':players:exoplayer')
avec compile project(':players:exoplayer2')
dans le bloc des dépendances.
Vous connaissez peut-être déjà les modifications architecturales apportées par l'équipe de Google ExoPlayer dans la deuxième version de leur lecteur, mais si ce n'est pas le cas, vous devez savoir que le remaniement a été important par rapport à la première version et qu'il y a eu beaucoup de changements radicaux. Certaines classes publiques ont été renommées, d'autres ont été supprimées et il y a eu plusieurs ajouts. Vous pouvez consulter ExoPlayer 2 - New package and class names pour en savoir plus.
Beaucoup d'efforts ont été faits pour gérer ces changements architecturaux dans le SDK du lecteur natif de Brightcove pour Android, afin de rendre le processus de mise à niveau vers ExoPlayer 2 aussi simple que possible. Si votre application n'utilise que les classes Brightcove, l'effort de mise à niveau devrait être minime. Toutefois, si vous utilisez des classes ExoPlayer exposées, ou certaines des classes ExoPlayerVideoDisplayComponent
qui dépendent des callbacks d'ExoPlayer, il est probable que vous rencontriez des ruptures.
Si vous rencontrez des erreurs, veuillez consulter la section "breaking changes" du document " Migrating to ExoPlayer 2 Framework".
AVANTAGES DE LA MISE À NIVEAU VERS EXOPLAYER 2
L'ExoPlayer 2 du SDK natif Brightcove pour Android offre les mêmes fonctionnalités que l'ExoPlayer classique. Il s'agit notamment de la lecture facile de vidéos à la demande (VOD) avec prise en charge de plusieurs pistes audio et sous-titres tels que WebVTT et EIA-608, de la lecture de contenu protégé par Widevine Modular, de la publicité côté client avec Google Interactive Media Ads (IMA) et FreeWheel, de la prise en charge d'Android TV et de Fire TV, de Video 360 et de la lecture hors ligne. Il comprend également une intégration complète avec les services de Brightcove tels que VideoCloud et Dynamic Delivery.
Avec ExoPlayer 2, l'équipe de Google ExoPlayer a ajouté de nouvelles fonctionnalités à son framework, amélioré la prise en charge des fonctionnalités existantes et corrigé de nombreux bugs, rendant ExoPlayer 2 plus robuste et plus fiable. Cela nous a permis de nous éloigner de notre version forkée d'ExoPlayer utilisée dans l'ancien lecteur, où nous avions beaucoup de code personnalisé, en particulier autour du HTTP Live Streaming (HLS) pour la VOD et la lecture en direct. Notre objectif est de continuer à utiliser le Google ExoPlayer directement, plutôt qu'une version forkée, afin que les futures mises à jour puissent être appliquées plus rapidement et plus fréquemment.
De nombreuses améliorations et ajouts ont été apportés dans des domaines importants du cadre ExoPlayer 2.
- Prise en charge complète des périodes multiples DASH.
- Schémas cryptographiques supplémentaires pour les DRM et prise en charge des licences hors ligne.
- Meilleure gestion des métadonnées ID3 malformées.
- Meilleure prise en charge des sous-titres WebVTT et EIA608.
- Amélioration de la recherche de l'avant dans le contenu mis en mémoire tampon, ce qui la rend vraiment rapide et efficace.
En utilisant le SDK Brightcove Native pour Android avec ExoPlayer 2, votre application bénéficiera automatiquement de toutes ces améliorations.
Comme indiqué ci-dessus, ExoPlayer a également amélioré de manière substantielle sa prise en charge de la HLS.
- Ajout ou amélioration de la prise en charge des balises HLS telles que EXT-X-DISCONTINUITY, EXT-X-START, EXT-X-DISCONTINUITY-SEQUENCE et EXT-X-PROGRAM-DATE-TIME.
- Ajout de la prise en charge de l'utilisation de la bande passante moyenne lorsqu'elle est disponible dans la liste de lecture principale HLS.
- Meilleure prise en charge du MPEG-TS à plusieurs égards.
- Plusieurs méthodes utilitaires pour identifier et travailler avec du contenu en direct.
- Meilleure gestion de l'exception BehindLiveWindowException, une amélioration qui a été exploitée par le SDK du lecteur natif de Brightcove pour Android afin d'offrir une meilleure expérience avec HLS Live.
Vous pouvez consulter la liste complète des ajouts et des corrections dans la bibliothèque ExoPlayer 2 dans ses notes de version.
Il existe d'autres fonctionnalités dont vous pouvez tirer parti en accédant directement à l'objet Player d'ExoPlayer 2. Cependant, vous devez être conscient que lorsque vous travaillez directement avec les classes d'ExoPlayer 2, les risques d'introduire des changements radicaux dans votre code augmentent lorsque de nouvelles versions d'ExoPlayer sont publiées. Vous pouvez accéder à l'instance ExoPlayer par l'intermédiaire de la fonction getExoPlayer()
dans la méthode ExoPlayerVideoDisplayComponent
classe. Nous utilisons actuellement l'outil SimpleExoplayerInstance
Vous pouvez donc le convertir en cet objet et utiliser ses méthodes utilitaires, comme indiqué ci-dessous.
ExoPlayerVideoDisplayComponent displayComponent = (ExoPlayerVideoDisplayComponent) brightcoveVideoView.getVideoDisplay();
ExoPlayer exoPlayer = displayComponent.getExoPlayer();
if (exoPlayer instanceof SimpleExoPlayer) {
SimpleExoPlayer simpleExoPlayer = (SimpleExoPlayer) exoPlayer;
}
Un exemple de fonction qui pourrait vous intéresser est la définition d'une vitesse de lecture variable avec ExoPlayer.
Si vous ne l'avez pas encore fait, nous vous conseillons vivement d'envisager une mise à niveau vers ExoPlayer 2, car nous avons supprimé notre support pour l'ancien framework ExoPlayer.