Études de cas

Instagram et Facebook offrent une lecture instantanée et améliorent l'engagement des utilisateurs grâce à Media3 PreloadManager

Temps de lecture : 4 min
Mayuri Khinvasara Khabya
Ingénieure en relations avec les développeurs

Dans le monde dynamique des médias sociaux, l'attention des utilisateurs se gagne ou se perd rapidement. Les applications Meta (Facebook et Instagram) font partie des plus grandes plates-formes sociales au monde et sont utilisées par des milliards de personnes. Pour Meta, la diffusion de vidéos sans interruption n'est pas qu'une simple fonctionnalité, c'est le cœur de l'expérience utilisateur. Les vidéos courtes, en particulier le fil d'actualité Facebook et les Reels Instagram, sont devenus un moteur d'engagement majeur. Elles permettent l'expression créative et la consommation rapide de contenu, tout en connectant et en divertissant les utilisateurs du monde entier. 

Cet article de blog vous explique comment Meta a transformé la lecture vidéo pour des milliards d'utilisateurs en offrant une véritable lecture instantanée.

Le décalage de latence dans les vidéos courtes

Les vidéos courtes entraînent des interactions très rapides, car les utilisateurs font défiler rapidement leur flux. Offrir une transition fluide entre les vidéos dans un flux en constante évolution pose des défis uniques pour la lecture instantanée. Nous avons donc besoin de solutions qui vont au-delà de la mise en cache sur disque traditionnelle et des stratégies de lecture réactive standards.

La voie à suivre avec Media3 PreloadManager

Pour répondre à l'évolution des habitudes de consommation due à l'essor des contenus courts et aux limites de l'architecture de lecture traditionnelle des contenus longs, Jetpack Media3 a introduit PreloadManager. Ce composant permet aux développeurs d'aller au-delà de la mise en cache sur disque, en offrant un contrôle précis et une personnalisation pour que les contenus multimédias soient prêts en mémoire avant que l'utilisateur n'appuie sur le bouton de lecture. Lisez cette série d'articles de blog pour comprendre les détails techniques de la lecture multimédia avec PreloadManager.

Comment Meta a obtenu une véritable lecture instantanée

Complexités existantes

Auparavant, Meta utilisait une combinaison de préchauffage (pour préparer les lecteurs) et de préextraction (pour mettre en cache le contenu sur le disque) pour la diffusion de vidéos. Bien que ces méthodes aient contribué à améliorer l'efficacité du réseau, elles ont introduit des défis importants. Le préchauffage nécessitait d'instancier plusieurs instances de lecteur de manière séquentielle, ce qui consommait beaucoup de mémoire et limitait le préchargement à quelques vidéos seulement. Cette forte demande de ressources signifiait qu'une solution robuste plus évolutive pouvait être appliquée pour offrir la lecture instantanée attendue sur les flux sociaux modernes à défilement rapide.

Intégrer Media3 PreloadManager

Pour obtenir une lecture véritablement instantanée, l'équipe Media Foundation Client de Meta a intégré Jetpack Media3 PreloadManager à Facebook et Instagram. Elle a choisi DefaultPreloadManager pour unifier ses systèmes de préchargement et de lecture. Cette intégration a nécessité de refactoriser l'architecture existante de Meta pour permettre un partage efficace des ressources entre les instances PreloadManager et ExoPlayer. Ce changement stratégique a sans frais un avantage architectural clé : la possibilité de paralléliser les tâches de préchargement et de gérer de nombreuses vidéos à l'aide d'une seule instance de lecteur. Cela a considérablement augmenté la capacité de préchargement tout en éliminant les complexités liées à la mémoire de leur approche précédente.

colinKho.png

Optimisation et réglage des performances

L'équipe a ensuite effectué des tests et des itérations approfondis pour optimiser les performances dans l'écosystème mondial d'appareils diversifié de Meta. Le préchargement agressif initial a parfois causé des problèmes, y compris une augmentation de l'utilisation de la mémoire et un ralentissement des performances de défilement. Pour résoudre ce problème, elle a affiné l'implémentation en utilisant des mesures de mémoire précises, en tenant compte de la fragmentation des appareils et en adaptant le système à des modèles d'interface utilisateur spécifiques.

Ajuster l'implémentation à des modèles d'interface utilisateur spécifiques

Meta a appliqué différentes stratégies de préchargement et adapté le comportement aux modèles d'interface utilisateur spécifiques de chaque application :

  • Fil d'actualité Facebook : l'interface utilisateur donne la priorité à la vidéo qui s'affiche actuellement. Le gestionnaire ne précharge que la vidéo actuelle pour s'assurer qu'elle démarre au moment où l'utilisateur met en pause son défilement. Cette approche "uniquement pour la vidéo actuelle" minimise les empreintes de données et de mémoire dans un environnement où les utilisateurs peuvent voir de nombreux posts statiques entre les vidéos. Bien que le système soit actuellement conçu pour précharger uniquement la vidéo affichée, il peut être ajusté pour précharger également les vidéos à venir. 
  • Reels Instagram : il s'agit d'un environnement vidéo pur où les utilisateurs font glisser leur doigt verticalement. Pour cette interface utilisateur, l'équipe a implémenté une stratégie de "préchargement adjacent". PreloadManager conserve les vidéos immédiatement après le Reel actuel en mémoire. Cette approche bidirectionnelle garantit que, qu'un utilisateur fasse glisser son doigt vers le haut ou vers le bas, la transition reste instantanée et fluide. Le résultat a été une amélioration spectaculaire de la qualité de l'expérience, y compris des améliorations du démarrage de la lecture et du délai avant la première image pour l'utilisateur.

Adapter à un écosystème mondial d'appareils diversifié

Adapter une pile vidéo hautes performances à des milliards d'appareils nécessite plus qu'un simple préchargement agressif : cela nécessite de l'intelligence. Meta a rencontré des difficultés initiales liées à la pression sur la mémoire et au décalage de défilement, en particulier sur le matériel de milieu et d'entrée de gamme. Pour résoudre ce problème, elle a créé un système de détection de la charge de l'appareil autour de l'implémentation Media3. Les applications surveillent désormais les signaux d'E/S et de processeur en temps réel. Si un appareil est fortement sollicité, le préchargement est mis en pause pour donner la priorité à la réactivité de l'interface utilisateur.

Cette optimisation adaptée à l'appareil garantit que l'avantage de la lecture instantanée ne se fait pas au détriment de la stabilité du système, ce qui permet même aux utilisateurs d'un matériel plus ancien de profiter d'un flux plus fluide et ininterrompu.

mirabelHu.png

Avantages architecturaux et santé du code

Au-delà des métriques visibles par l'utilisateur, la migration vers Media3 PreloadManager a sans frais des avantages architecturaux à long terme. Bien que le processus d'intégration et de réglage ait nécessité plusieurs itérations pour équilibrer les performances, la base de code résultante est plus facile à gérer. L'équipe a constaté que l'API PreloadManager s'intégrait parfaitement à l'écosystème Media3 existant, ce qui permettait un meilleur partage des ressources. Pour Meta, l'adoption de Media3 PreloadManager était un investissement stratégique dans l'avenir de la consommation vidéo. 

En adoptant le préchargement et en ajoutant des passerelles intelligentes pour les appareils, l'entreprise a réussi à augmenter la durée de visionnage totale sur ses applications et à améliorer l'engagement global de sa communauté mondiale. 

Impact sur Instagram et Facebook

L'architecture proactive a permis d'améliorer immédiatement et de manière mesurable les deux plates-formes. 

  • Facebook a bénéficié d'un démarrage de la lecture plus rapide, d'une diminution des taux d'interruption de la lecture et d'une réduction des mauvaises sessions (comme la mise en mémoire tampon, le délai de démarrage, la qualité inférieure, etc.), ce qui a entraîné une augmentation de la durée de visionnage. 
  • Instagram a bénéficié d'un démarrage de la lecture plus rapide et d'une augmentation de la durée de visionnage totale. L'élimination de la latence de jonction (l'intervalle entre l'action de l'utilisateur et l'affichage de la première image) a directement augmenté les métriques d'engagement. Les interruptions moins fréquentes dues à la réduction de la mise en mémoire tampon ont permis aux utilisateurs de regarder plus de contenu, ce qui s'est traduit par des métriques d'engagement.
beforeAfterPreload.gif

Principaux enseignements techniques à grande échelle

À mesure que les habitudes de consommation de contenus multimédias évoluent, la demande d'expériences instantanées continuera de croître. L'implémentation d'une gestion proactive de la mémoire et l'optimisation pour l'adaptation et la diversité des appareils permettent à votre application de répondre efficacement à ces attentes.

  • Donner la priorité au préchargement intelligent

Concentrez-vous sur la fourniture d'une expérience fiable en minimisant les saccades et les temps de chargement grâce au préchargement. Plutôt que d'utiliser une simple mise en cache sur disque, le préchargement au niveau de la mémoire garantit que le contenu est prêt au moment où un utilisateur interagit avec lui.

  • Aligner votre implémentation sur les modèles d'interface utilisateur

Personnalisez le comportement de préchargement en fonction de l'interface utilisateur de vos applications. Par exemple, utilisez une approche "uniquement pour la vidéo actuelle" pour les flux mixtes comme Facebook afin d'économiser de la mémoire, et une stratégie de "préchargement adjacent" pour les environnements verticaux comme les Reels Instagram.

preloadingStrategy.png
  • Exploiter Media3 pour la santé du code à long terme

L'intégration aux API Media3 plutôt qu'à une solution de mise en cache personnalisée permet un meilleur partage des ressources entre le lecteur et PreloadManager, ce qui vous permet de gérer plusieurs vidéos avec une seule instance de lecteur. Cela permet d'obtenir une base de code pérenne que les équipes d'ingénierie peuvent non seulement gérer et optimiser au fil du temps, mais aussi bénéficier des dernières mises à jour des fonctionnalités.

  • Implémenter des optimisations adaptées aux appareils

Élargissez votre marché en testant votre application sur différents appareils, y compris les modèles de milieu et d'entrée de gamme. Utilisez des signaux en temps réel tels que le processeur, la mémoire et les E/S pour adapter les fonctionnalités et l'utilisation des ressources de manière dynamique.

En savoir plus

Pour commencer et en savoir plus, accédez à 

Vous connaissez maintenant les secrets de la lecture instantanée. Essayez-les dès maintenant !

Écrit par :

Lire la suite