Le streaming


Son but

L'internet et les technologies d'aujourd'hui ne cessent d'évoluer. On peut maintenant transmettre des flux audio et video sur le Web sans avoir à les télecharger. C'est ce principe que représente le streaming.

Grâce au streaming on peut maintenant :

Pour la suite de cet aticle on s'interessera surtout aux flux video qui demande le transit de nombreuses données. En effet l'envoi d'un flux video demande plus de traitement du fait du poids des fichiers.

Principe

En temps normal pour consulter un fichier sur internet, il faut l'avoir préalablement téléchargé sur son ordinateur. Lorsqu'il s'agit de fichiers de petites taille(de l'ordre du kilo octet), cela ne pose aucun problème. Cependant, pour des fichiers plus importants le temps de telechargement peut parfois être très long.
Le streaming permet de remédier à ce genre de problèmes. En effet il permet le telechargement et l'écoute simultanée de fichiers multimédia sans avoir à effectuer de copies locales.

Pour pouvoir réaliser cette opération, le serveur envoie le fichier video ou audio par paquets de données qui seront traités par l'ordinateur de l'utilisateur au fur et à mesure de leurs arrivées. A cause des fluctuations réseaux les paquets n'arrivent pas toujours dans le bon ordre. On utilise donc une mémoire tampon pour regrouper les paquets dans le bon ordre. Cette memoire tampon ou buffer est crée par le lecteur média de l'ordinateur de l'utilisateur. Au bout de quelques secondes, une fois que le buffer de reception possède assez d'informations, la lecture du flux commence et les images ou le son sont retransmis. La mémoire tampon a donc pour rôle de fluidifier le flux. Si la connexion réseau est mauvaise l'arrivé des paquets sera ralentie. Lorsque le buffer de réception est vide, la lecture s'arrête et reprendra lorsqu'elle possèdera assez de données pour continuer. L'image est alors figée.

Pour que le streaming soit rendu possible il faut effectuer un traitement sur le fichier avant de le transmettre sur le réseau. En effet la taille d'une vidéo étant en général assez importante, il faut la compresser afin de réduire le nombre de paquets à envoyer.

traitement du fichier

Il ne faut donc pas attendre du streaming la même qualité que le fichier d’origine. En plus de la compression, on peut appliquer au fichier certains filtres ou encore le convertir dans un autre format.

La compression : principes

La bande passante dans une entreprise est une ressource que l'on cherche à économiser d'une part parcequ'elle est limitée et d'autre part parcequ'il faut pouvoir assurer une qualité minimum de tous les services que l'on souhaite fournir. La compression d'une vidéo est donc rendu obligatoire par le poids considérable de ses données. En effet on ne peut pas se permettre de perdre une grande partie de la bande passante à chaque fois que l'on effectue du streaming vidéo.

La compression est un procédé qui repère et réduit les redondances qu’elles soient spatiales (dans une image), temporelles (entre des images) ou subjectives (que l’œil humain perçoit le moins). Chaque outil de compression peut alors appliquer ses propres méthodes. C'est pourquoi on trouve aujourd'hui de nombreux formats de compression.

Le princpe du streaming est donc de réduire le poids des données pendant la transmission en utilisant de la compression et d'effectuer une décompression avant la lecture de celles-ci. C'est le lecteur multimédia de l'utilisateur qui décompressera le flux et restituera la vidéo avec un maximum de qualité possible.

On effectue dans la pluspart des cas pour le streaming, une compression asymétrique. Cela signifie que la compression sera plus longue et la décompression assez rapide. L'encodage d'une vidéo pourra alors prendre du temps en fonction de la qualité que l'on souhaite avoir pour la vidéo, tandis que la décompression sera rapide pour permettre une lecture presque instantannée du flux.

La décompression s'effectue par des codecs qui permettent de restituer une vidéo compressée avant la lecture. l'utilisateur doit donc posséder le codec adéquat pour pouvoir lire la vidéo. En effet il faut avoir le codec qui a été utilisé pour la compression du même fichier.
Il existe deux type de codecs : Les codecs sans perte et les codecs destructifs qui ne restituent pas l'intégralité de la qualité d'une vidéo.
Aujourd'hui la majorité des codecs utilisés sur Internet sont destructifs.

Diffusion : unicast et multicast

Un flux de streaming peut être diffusé de deux façons :

Les protocoles

La transmission de données en temps réel demande de bons débit réseaux. Il est plus facile de compenser de la perte de données que de compenser de longs délais dans la réception de données. Ce type d'accès est très différent de celui à un simple fichier statique où la chose la plus importante est que chaque paquet de données arrive à destination. Ainsi les protocoles utilisés pour des données statiques ne sont pas adéquates pour supporter du streaming. Par exemple FTP et HTTP sont basé sur TCP(Transmission Control Protocol) utilisé dans le cadre d'une communication fiable(contrôle d'erreur, retransmission si perte, perte de débit). Or tous ces contrôles de données ne nous sont pas utiles pour effectuer du streaming et occasionne une perte de débit, essentiel au bon fonctionnement de ce processus. C'est pourquoi le streaming se base le plus souvent sur le protocole de transport UDP (User Datagram Protocol). Ce protocole ne garantie pas l'ordre de réception des paquets ni leur arrivée à destination mais nous permet d'obtenir un débit optimal. TCP et UDP ne sont que des protocoles de transport autour desquels la plupart des applications fonctionnent aujourd'hui. Le standard Internet pour transporter des données média en temps réel est RTP (Real-Time Transport Protocol ) qui est un protocole de plus haut niveau.

RTP :
RTP est défini dans IETF RFC 1889, un produit de l' « AVT working group » de l' « internet Engineering Task Force (IETF) ». Il est indépendant du réseau et du protocole de transport utilisé.
RTP nous permet d'identifier le type de données transmises, détermine l'ordre dans lequel les paquets doivent être interprétés et synchronise les données média à partir de différentes sources. Les paquets RTP ne sont en aucun cas garantis d'arriver dans l'ordre ou d'arriver tout simplement. C'est au receveur de reconstruire la séquence de paquets et de détecter les paquets perdus à partir de l'entête RTP. Comme RTP ne fournit aucun mécanisme de contrôle ni aucune garantie de la qualité de service, il existe un protocole de contrôle RTCP qui permet de monitorer la qualité des données transmises. Il fournit également du contrôle et un méchanisme d'identification pour les transmissions RTP.
RTCP : Real-time Transport Control Protocol

Le protocole RTSP(Real-time Streaming Protocol) est une amélioration du protocole RTP. Il contrôle entre autre les propriétés de temps d’une vidéo.