Brevet FR3091098A1 — publié le 20200626

Description Titre de l'invention : Procédé de diffusion en flux adaptatif. [0001] La présente invention se rapporte à un procédé de diffusion de flux en continue entre un serveur diffusant un contenu selon une technique de diffusion en flux adaptatif dans laquelle un manifeste décrivant des segments de contenu et contenant des paramètres associés est également diffusé, et un client mettant en oeuvre une technique de diffusion en flux adaptatif pour lire le contenu. [0002] L'invention concerne également un appareil mettant en oeuvre ce procédé. [0003] Il s'agit de transmettre un contenu « live » en diffusion en flux adaptatif sur internet. De façon générale, cette technique est mise en place au sein du serveur qui est apte à découper le contenu en différentes présentations de qualité et débit variable, découpées en segments de durées différentes. [0004] Du côté du lecteur ou décodeur dans le domicile d'un utilisateur par exemple, le lecteur peut manquer du contenu après un certain temps de visualisation trop rapide. [0005] Le lecteur peut aussi perdre une partie du contenu (un segment) s'il joue trop lentement. La cause peut être le fait que l'horloge du lecteur (application « client ») mettant en oeuvre la technique du flux adaptatif n'est pas synchronisé avec l'horloge du serveur. [0006] La présente invention a pour but de limiter les effets de la désynchronisation entre l'horloge du client et l'horloge du serveur. [0007] Un autre but de l'invention est une diffusion « live » de façon continue sans in- terruption. [0008] On atteint au moins l'un des objectifs avec un procédé de diffusion de flux en continue entre un serveur diffusant un contenu selon une technique de diffusion en flux adaptatif dans laquelle un manifeste décrivant des segments de contenu et contenant des paramètres associés est également diffusé, et. un client mettant en oeuvre une technique de diffusion en flux adaptatif pour lire le contenu. [0009] Selon l'invention, le procédé comprend les étapes suivantes au niveau du client : [0010] - calcul en temps réel d'un nombre de segments disponibles, les segments disponibles étant des segments décrits dans le manifeste mais qui ne sont pas encore téléchargés par le client, [0011] - suivi de l'évolution dudit nombre de segments disponibles en fonction du temps, [0012] - estimation d'un retard ou d'une avance de l'horloge interne du client par rapport à l'horloge du serveur à partir de l'évolution dudit nombre de segments disponibles en dessous ou au-delà d'une valeur de consigne, [0013] - modification en temps réel de la vitesse de lecture des segments par le client de façon à tendre vers ladite valeur de consigne. 2 [0014] Le serveur peut être un serveur web, http, ftp ou autre. [0015] Avec le procédé selon l'invention, on utilise le manifeste pour suivre l'évolution de segments disponibles. Le manifeste est un fichier texte ou XML qui décrit la structure selon laquelle est organisée la diffusion du contenu, et permet au client de déterminer comment charger les segments de contenu, c'est à dire des parties du contenu à lire. Le manifeste peut notamment contenir la liste de tous les débits disponibles pour un contenu donné et une description de chacun d'entre eux. L'invention est notamment remarquable, niais pas uniquement, par le fait que l'observation de segments disponibles permet d'en déduire une dérive ou non de l'horloge du client par rapport à l'horloge du serveur. Pour cc faire, on calcule à chaque instant le nombre de segments disponibles et le compare à une valeur de consigne. [0016] Cette précieuse information sur la dérive permet de contrôler la vitesse de lecture des segments. [0017] La présente invention s'applique avantageusement à du contenu temps réel, en ligne, dit contenu live. [0018] La présente invention tend à synchroniser l'horloge du client de diffusion en flux adaptatif avec l'horloge du serveur diffusant le contenu. Pour ce faire, on agit sur la vitesse de lecture du contenu dans le client. [0019] Selon une caractéristique avantageuse de l'invention, la modification de la vitesse de lecture des segments peut consister à appliquer une correction sur l'horloge du client. [0020] Ainsi, avec l'invention on détermine si l'horloge du client est en avance ou en retard, puis on applique une correction su l'horloge du client. La correction est fonction de cette avance ou de ce retard. [0021] Selon une autre caractéristique avantageuse de l'invention, la modification de la vitesse de lecture des segments peut consister à appliquer une correction sur la valeur du marqueur temporel de présentation (PTS, « Presentation Time Stamp ») de chaque trame audio/vidéo contenant des segments à lire. Ce mode de réalisation est particulièrement avantageux lorsque l'horloge n'est pas accessible. Mais il peut également s'appliquer ensemble avec la correction de l'horloge. [0022] Modifier ainsi le marquer temporel de présentation permet de compenser la dérive de l'horloge. [0023] Le marqueur temporel de présentation (PTS) indique l'instant où une image doit être présentée à la sortie de l'appareil. [0024] Selon un mode de réalisation avantageux de l'invention, la modification de la vitesse de lecture des segments peut consister à accélérer la lecture lorsque ledit nombre de segments disponibles augmente, et à ralentir la lecture lorsque ledit nombre de segments disponibles baisse. [0025] En agissant sur l'horloge et/ou sur le marqueur temporel de présentation, on accélère 3 ou ralentit la diffusion du contenu de façon à compenser le décalage entre l'horloge client et l'horloge serveur. [0026] De préférence, la valeur de consigne est un nombre de segments disponibles calculé en début de lecture du flux, en régime établi. Cette valeur de consigne est un nombre permettant d'assurer une diffusion continue, sans interruption, du contenu. Il peut être un nombre fixe mais il est de préférence donc déterminé selon l'invention. Il peut être fonction du contenu du manifeste et de la bande passante disponible. [0027] Selon une caractéristique avantageuse de l'invention, à chaque instant, le nombre de segments chargés dans le client peut être un nombre fixe déterminé en fonction de l'espace mémoire disponible pour stocker les segments à charger et les variations maximales du débit de chargement à supporter sans interrompre la lecture du contenu. [0028] Selon un autre aspect de l'invention, il est proposé un appareil comprenant une ap- plication client mettant en oeuvre une technique de diffusion en flux adaptatif pour lire un contenu, ce contenu étant diffusé par un serveur de diffusion de flux en continue selon une technique de diffusion en flux adaptatif dans laquelle un manifeste décrivant des segments de contenu et contenant des paramètres associés est également diffusé. Selon l'invention, l'appareil comprend une unité de traitement configurée pour mettre en oeuvre les étapes suivantes au niveau du client : [0029] - calcul en temps réel d'un nombre de segments disponibles, les segments disponibles étant des segments décrits dans le manifeste mais qui ne sont pas encore téléchargés par le client, [0030] - suivi de l'évolution dudit nombre de segments disponibles en fonction du temps, [0031] - estimation d'un retard ou d'une avance de l'horloge interne du client par rapport à l'horloge du serveur à partir de l'évolution dudit nombre de segments disponibles en dessous ou au-delà d'une valeur de consigne, [0032] - modification en temps réel de la vitesse de lecture des segments par le client de façon à tendre vers ladite valeur de consigne. [0033] Avantageusement, l'appareil peut être un téléphone intelligent de type smartphone », un ordinateur portable ou un décodeur TV de type « set top box ». [0034] D'autres avantages et caractéristiques de l'invention apparaîtront à l'examen de la description détaillée d'un mode de mise en oeuvre nullement limitatif, et des figures annexées sur lesquelles : [0035] [fig.1] est une vue schématique illustrant un client et un serveur diffusant un contenu selon une technique de diffusion en flux adaptatif dans laquelle un manifeste décrivant des segments de contenu et contenant des paramètres associés est également diffusé, [0036] [fig.2] est une vue schématique d'un manifeste diffusé par le serveur de la figure 1, et [0037] [fig.3] illustre un schéma électronique simplifié représentant quelques composants internes du décodeur 1 selon l'invention. [0038] Sur la figure 1 on distingue un décodeur TV installé dans une habitation individuelle et connecté à un téléviseur 2. Cc décodeur 1 a pour fonction de transmettre du contenu vers le téléviseur pour affichage. Le contenu provient généralement d'un serveur 3 accessible via internet. [0039] Dans l'exemple de la figure 1, le serveur 3 est un serveur diffusant un contenu selon une technique de diffusion en flux adaptatif dans laquelle un manifeste 4 décrivant des segments de contenu et contenant des paramètres associés est également diffusé. Le contenu est un contenu « live » transmis par diffusion en flux adaptatif via http, « adaptative streaming over http » en langue anglaise. Ce serveur est un serveur conventionnel actuel. [0040] Le contenu à transmettre est découpé en plusieurs segments de plus ou moins courtes durées. Ces segments sont transmis vers le décodeur 1 via internet pour un décodage avant diffusion en continu sur le téléviseur 2. Les segments sont des données contenant notamment de l'andin, de la vidéo et des sous-titres. [0041] Sur la figure 2, le manifeste 4 du contenu « live » contient, pour un service donné, c'est-à-dire pour une chaîne en « live », un nombre de segments stable dans le temps. Ils peuvent représenter d'une minute à plusieurs heures du contenu. Il s'agit d'une fenêtre glissante. [0042] Le manifeste est un fichier au format XML dans lequel sont renseignés l'organisation des segments ainsi que des paramètres associés. Plus précisément, le fichier manifeste comprend des métadonnées de diffusion en continu telles que le type de piste audio, vidéo ou texte, le nom de piste, l'heure de début et de fin, le débit binaire, les langues de piste, la fenêtre de présentation et le codec vidéo. Il indique également au décodeur, comme on peut le voir sur la figure 2, les segments disponibles et les segments déjà chargés. [0043] Du côté du client, le décodeur 1 télécharge les segments au fur et à mesure de la lecture. Le nombre de segments chargés, à un instant donné, est fixe. C'est un compromis entre l'espace mémoire nécessaire pour les stocker et les variations maximales du débit de chargement à supporter sans interrompre la lecture du service. [0044] Ces deux valeurs permettent de calculer le nombre de segments disponibles dans le manifeste, c'est-à-dire les segments disponibles sur le serveur mais qui ne sont pas encore téléchargés par le client. Cette valeur au lancement du flux, en régime établi, constitue la valeur de consigne. [0045] En observant l'évolution du nombre de segments disponibles au cours du temps, on peut donc déterminer la dérive entre l'horloge du client et celle du serveur : Si le nombre de segments disponibles augmente, alors le client est plus lent que le serveur, Si le nombre de segments disponibles diminue, alors le client est plus rapide que le serveur. [0046] La dérive entre l'horloge du client et celle du serveur peut donc être estimée à partir de l'observation du changement des segments disponibles dans le temps. Ceci permet d'en déterminer une correction à appliquer sur l'horloge du client afin de converger vers la valeur de consigne. [0047] La figure 3 illustre un schéma électronique simplifié représentant quelques composants internes du décodeur 1 selon l'invention. On distingue l'unité de traitement CPU 5 configurée pour mette en oeuvre l'invention et pour piloter les différents composants. Les mémoires RAM 6 et flash 7 permettent le stockage de données. [0048] Le flux de données provenant du serveur 3 est par exemple un flux de transport 8 qui alimente un démultiplexcur et décodeur 9. Cc dernier génère une partie vidéo qui est ensuite décodée par un décodeur vidéo 10 apte à générer un signal vidéo pour alimenter le téléviseur 2. [0049] Le démultiplexeur et décodeur 9 génère également une partie audio qui est ensuite décodée par un décodeur audio 10 apte à générer un signal audio pour alimenter le téléviseur 2. [0050] Le démultiplexeur et décodeur 9 est connecté à l'horloge ou contrôleur d'horloge 12. Ce dernier est connecté aux deux décodeurs vidéo et audio 10 et 11. [0051] Lorsqu'une correction est déterminée, on peut l'appliquer sur l'horloge 12 de façon positive ou négative. [0052] Cependant, si par exemple l'horloge 12 n'est pas configurable, l'information de dérive d'horloge ne peut pas être utilisée pour modifier directement la vitesse de cette horloge. Ainsi pour tenter de converger tout de même vers la valeur de consigne, on peut ajouter la correction calculée à la valeur du marqueur temporel de présentation (PTS) de chaque trame à lire. [0053] En effet, le flux de transport est composé à partir de flux élémentaires continus transportant de l'audio ou de la vidéo et divisés en paquets. Ces paquets sont identifiés par des en-têtes contenant des marqueurs temporels pour la synchronisation. [0054] Ainsi, l'invention propose d'utiliser la correction calculée à partir de l'observation du manifeste, pour modifier la vitesse de consommation des données. La modification des marqueurs temporels de présentation permet d'accélérer ou de ralentir la vitesse de lecture. [0055] Bien sûr, l'invention n'est pas limitée aux exemples qui viennent d'être décrits et de nombreux aménagements peuvent être apportés à ces exemples sans sortir du cadre de 6 l'invention. 7 [Revendication 1] [Revendication 2] [Revendication 3] [Revendication 4] [Revendication 5] [Revendication 6]