# CIR Brut
# Problématique
Avoir une fil scrollable de vidéos qui se lisent automatiquement lors de leur affichage, de manière fluide sur n'importe quel appareil et s'adaptant aux contraintes réseau.
# Contrainte de préchargement
Les videos sont généralement plus volumineuses en taille que des images. Afin de pouvoir lire une video, il faut avoir chargé quelques secondes de celle ci.
Afin d'avoir une expérience fluide pour l'utilisateur et donner l'impression que les contraintes de transfert de données n'existent pas, il faut mettre en place une stratégie de préchargement des videos dans le flux. Mais il faut également faire attention à ne pas précharger trop de données afin de ne pas surconsommer en transfert de donnée car si les téléphones sont en connectivité réseau mobile,la quantité de donnée est souvent limité dans les abonnements.
Au niveau du préchargement des videos, il faut prendre en considération que le fil affiché est circulaire, et donc que l'utilisateur peut à la fois scroller vers le haut et vers le bas. Le fil, dans son état initial ne peut etre scrollé que vers le bas. Ainsi il est possible que la prochaine video que l'utilisateur va afficher, se trouve à la suite, ou précède la video en cours de lecture. La stratégie de préchargement doit donc prendre en compte cette contrainte.
# Contrainte réseau
le réseau, que ca soit via une connexion wifi, fibre, ou 4g ne permet pas d'attendre d'avoir récupérer l'intégralité d'une video avant de commencer à la lire. L'expérience utilisateur en serait trop dégradée. Ces problématiques ont déjà été résolu par les acteurs du marché et donc des formats permettant de lire une video des que des parties de videos sont récupérées existent. Il a été choisi le format HTTP Live Streaming (HLS), afin de résoudre cette problématique.
Ce format permet également d'avoir plusieurs qualités disponibles pour les parties (chunks) des videos. Il a donc fallu mettre en place une stratégie adaptative, en fonction des capacités du téléphone, du réseau pour sélectionner les parties qui correspond le mieux au capacité du télépone à un instant donné.
Apres de nombreux essaies, il a été choisi une stratégie optimiste qui en fonction du réseau précharge les videos de meilleure qualité et abaisse la qualité si le flux réseau ne suit pas. En effet, etre en 5G ou Wifi ne présupose en rien de la qualité de transfert des données. C'est seulement une indication sur la possibilité du réseau.
# Contrainte de cache mémoire
Les videos étant volumineuse, précharger celles ci en mémoire nécessite un espace mémoire important. Certains téléphones étant fortement limités à ce niveau, il a fallu définir une stratégie pour que les videos en mémoire soient effacées des qu'il est possible.
Mais dans certains cas, ces videos peuvent ne pas avoir d'intéret immédiat mais peuvent présenter un intéret plus tard. Ainsi, il est important d'utiliser un cache de second niveau, sur la mémoire non vive des appareils afin de ne pas etre obligé de consommer de la donnée si il est à nouveau nécessaire de charger ces videos.
### Les différentes stratégies essayées:
#### Stratégie optimiste.
#### Précharger les videos
##### BullshitGPT
La première étant de mettre en place un système de préchargement intelligent, qui permet de déterminer le type de connexion et le débit disponible et d'adapter le taux de préchargement en conséquence. Cela peut être réalisé en utilisant des algorithmes d'apprentissage automatique pour surveiller et analyser le comportement de l'utilisateur et adapter le préchargement en fonction de ses préférences et de ses usages.
Une autre stratégie est celle de la compression et du codage des vidéos. La vidéo peut être compressée et codée afin de réduire la taille des fichiers et de rendre leur préchargement plus rapide et plus efficace. La compression et le codage peuvent également être utilisés pour optimiser la qualité des vidéos pour les différents types de connexion.
Enfin, il est nécessaire d'optimiser le stockage des vidéos ainsi que les mécanismes de mise en cache et de mise en cache anticipée. Le but est d'améliorer la performance et le temps de chargement des vidéos en stockant les vidéos les plus demandées et en mettant en cache les vidéos pour lesquelles un préchargement est nécessaire.
Pour conclure, le développement d'une application mobile de type réseau social avec un flux vidéo est complexe et nécessite l'utilisation de différentes stratégies d'optimisation, telles que le préchargement intelligent, la compression et le codage des vidéos et l'optimisation du stockage et des mécanismes de mise en cache.