1- Généralités sur la lecture en continu = "streaming"
Un des intérêts majeurs de l'Internet Multimédia est de pouvoir effectuer une lecture en continu (Streaming) d'un flux de données audio ou vidéo.
Voir le site Wiki de l'Université de Paris Descartes pour de plus amples explications sur le Streaming, reprises dans ce qui suit...
La lecture en continu (streaming en anglais) est une technique permettant la lecture d'un flux audio ou vidéo (media stream) à mesure qu'il est diffusé. Elle s'oppose ainsi à la diffusion par téléchargement qui nécessite de récupérer l'ensemble des données d'un morceau ou d'un extrait vidéo avant de pouvoir l'écouter ou le regarder.
Le programme de lecture en continu, ou client, va récupérer une partie du contenu qu'il place dans une mémoire tampon, en paquets dont la taille est adaptée à la bande passante disponible entre le client et le serveur. Lorsqu'il y a suffisamment de données dans cette mémoire pour permettre de lire le début du fichier audio ou vidéo sans accroche, et cela même en cas de petits ralentissements réseau, la lecture démarre. En arrière-plan, le téléchargement du flux se poursuit afin d'alimenter sans cesse la mémoire tampon avec la suite du fichier.
En raison des latences créées par le réseau (Internet ou le réseau local) et des opérations de codage / décodage effectuées, un délai de 5 à 35 secondes (voire plus) peut intervenir entre le signal émis par la source et le signal reçu sur le lecteur.
Pour que ceci soit rendu possible, les données sont très compressées : il ne faut donc pas attendre du streaming la même qualité qu'un fichier "master" stocké sur votre disque dur, un tel fichier prendrait trop de bande passante pour être joué en temps réel.
Lecture en continue "Statique, ou "progressive"
C'est la solution la plus couramment utilisée, car elle s’effectue à partir d’un serveur web « standard » et utilise les protocoles HTTP et FTP basés sur TCP. Elle ne nécessite donc pas de serveur spécialisé.
Elle consiste à lire progressivement le fichier multimédia pendant son téléchargement. Après un temps de latence nécessaire au chargement des premières secondes, celles-ci sont lues tandis que la suite du fichier se charge. Le fichier est donc simplement proposé au téléchargement, de la même manière que tout autre type de fichier, et c'est le navigateur ou client (lecteur multimédia) qui se charge d'effectuer le streaming. La copie du fichier téléchargé est détruite par le navigateur à la fin du traitement. Elle permet de délivrer tout type de médias mais préalablement préenregistrés : elle ne peut pas transmettre de flux en temps réel.
L'inconvénient de cette solution est l'impossibilité de s'adapter à la qualité de connexion de l'utilisateur. Pour le diffuseur, il devient ainsi souvent nécessaire de proposer plusieurs fichiers avec des résolutions différentes pour permettre à l'internaute de choisir en fonction des capacités de sa connexion. Par ailleurs elle induit une attente pour avoir les premières images si le fichier est de taille importante. Le progressif est la méthode utilisée par des sites comme Dailymotion ou YouTube.
Lecture en continue "dynamique" ou "continue"
Elle nécessite un serveur spécialisé, appelé serveur de streaming, et utilise le protocoles RTP / RTCP sur UDP pour diffuser le contenu.
Il n'y a qu'un seul fichier diffusé contenant plusieurs fois les mêmes informations à différents niveaux de qualité, et c'est le serveur de lecture en continu spécialisé qui se charge de diffuser l'information adaptée. En fonction du débit de la connexion de l'internaute, le serveur sélectionne le niveau de qualité maximal pour une diffusion en temps réel. Le serveur est également capable de s'adapter automatiquement aux variations de la bande passante : si la connexion se détériore et que le taux de transfert baisse, le contenu est livré avec une moindre qualité afin d'éviter les interruptions de diffusion. Si en revanche la connexion devient plus fluide, la qualité s'améliore. Le contenu démarre dès que l'utilisateur demande à y accéder sans délais. L'inconvénient de cette solution est de devoir utiliser un serveur spécialisé (Xiph Icecast, Real Helix Streaming Server, Windows Media Services, Adobe Flash Media Server, Quicktime Streaming Server, etc.) et que l'internaute doit avoir une bande passante adaptée au contenu envoyé, le contenu étant diffusé au même rythme que la lecture de l'internaute..
Le streaming est le traitement appliqué à un flux de données en temps réel transitant sur le serveur, ou à un montage vidéo ou à un fichier audio installés sur le serveur. Il procède en plusieurs étapes :
Encodage
Afin de réduire le nombre de paquets de données à transmettre (et donc économiser la bande passante nécessaire) et permettre leur lecture en temps réel, les fichiers multimédias doivent être compressés dans un format de streaming du serveur : c'est l'encodage.
Cela suppose deux opérations : la compression à l’aide d’un codec et le multiplexage dans un conteneur (muxeur).
Compression avec un codec
Un codec (pour "compression/decompression") est un algorithme de compression utilisé pour réduire la taille d'un flux ou d’un fichier (audio ou vidéo). Il génère un format de compression spécifique. Il y a des codecs audio et des codecs vidéo.
MPEG-1, MPEG-2, MPEG-4, DivX, Vorbis, MP3 (etc) sont des codecs.
Il existe de nombreux formats de compression.
On distingue deux types de compression :
La compression sans perte
La compression sans perte se base sur la fréquence d'apparition de mots binaires dans le flux binaire représentant une image ou une source audio. Elle réduit la quantité d'information à transmettre aux clients en comptabilisant le nombre de fois qu'apparaît continuellement chacun des mots binaires les plus fréquemment rencontrés.
La compression avec perte
La compression avec perte, quand à elle, réduit la quantité d'information à transmettre en dégradant sensiblement les données tout en conservant l'information la plus pertinente du média. Les limites des perceptions auditives et visuelles humaines aidant, ces formats de compression permettent d'obtenir des ratios avoisinant le 1/10 tout en conservant une qualité visuelle ou auditive.Multiplexage dans un conteneur
Le multiplexage consiste à encapsuler (empaqueter) ensemble les différents flux requis dans un même fichier (conteneur) avant que celui-ci ne soit diffusé sur le réseau.
Un conteneur (ou muxeur) contient donc un ou plusieurs flux déjà encodés à l'aide de codecs, mais aussi d’autres informations qui définissent comment lire les données en indiquant le nom du codec nécessaire au décodage des flux audio et vidéo. Généralement, il y a un flux vidéo et un flux audio. Les formats conteneur les plus avancés sont capables de gérer de l'audio, de la vidéo, des sous-titres, des chapitres et des métadonnées (ou tags) et de façon synchronisée pour que les différents flux soient bien lus en même temps.
WAV, AIFF (etc) sont des conteneurs audio (flux audio seulement). AVI, OGG, Quicktime, ASF, MP4 (etc) sont des conteneurs vidéo (flux audio et vidéo).Les flux contenus peuvent être encodés à l'aide de codecs différents. Attention, tout codec n’est pas compatible avec tout conteneur.
Ainsi, un fichier AVI peut contenir du divx avec du mp3, ou wma, ou du mpeg, par exemple.
L'extension du fichier donne ainsi le type du conteneur des flux présents dans le fichier et les possibilités offertes à la lecture.Diffusion des données sur le réseau - Buffering
Le fichier audio ou le conteneur vidéo est ensuite placé sur le serveur qui, à chaque requête d'un internaute, duplique le fichier demandé et le délivre sous la forme d'un flux continu de données (petits paquets de données marqués temporellement afin d’être réordonnancés de manière cohérente par le client).
C'est le serveur de streaming qui se charge de faire correspondre une URL à un flux temps-réel (direct) ou à un fichier préenregistré (différé):
[protocole]://[hôte]/[chemin de fichier ou d'encodeur]
Par exemple:
rtsp://host.media.com/encoder/stream_1 pnm://host.media.com/medialib/fichier_a mms://host.media.com/medialib/fichier_bA cause des fluctuations réseaux, des différents parcours empruntés par les paquets et des variations de la bande passante, les paquets n'arrivent pas toujours dans le bon ordre. Les paquets sont donc regroupés et agencés dans le bon ordre dans une mémoire tampon (ou buffer) créée par le lecteur média de l'ordinateur de l'utilisateur. Au bout de quelques secondes, une fois que le buffer de réception 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.
Lecture du média
Les différents opérations permettant la lecture du média sont assurées par le lecteur multimédia de l’utilisateur. Tout lecteur est libre (gratuit) et multiplateforme. Il dispose de plusieurs codecs à sa disposition.
Démultiplexage
Le conteneur est tout d’abord démuxé (c’est le démultiplexage) : les différents flux audio et vidéo sont séparés et sauvegardés dans des fichiers différents.Décompression
Chacun de ces flux sont ensuite décodés (décompressés) en temps réel avec les mêmes codecs que ceux utilisés pour compresser ces flux. Le lecteur multimédia peut être amené à devoir télécharger le codec nécessaire (sous forme de plug-in) si celui-ci n’est pas présent dans l’environnement et s’il est autorisé à le faire (le codec requis peut être « propriétaire » et donc payant …). Ces flux sont alors restitués avec le maximum de qualité possible à l’utilisateur. Dans la plupart des cas, la compression est asymétrique : la compression (en fonction de la qualité que l'on souhaite avoir) sera plus longue et la décompression assez rapide pour permettre une lecture presque instantanée du flux.
Technologies Conteneurs Formats Protocoles supportés Connexion Real Networks
RealMedia vidéo: rm, ra UDP / TCP / HTTP (connexion) RTP / RDT / RTSP
audio: rma Microsoft et Windows Media Player
ASF asf UDP / TCP / HTTP (connexion) UDP / TCP /MMS
RTP / RDT / RTSP
Unicast WMV wmv (vidéo), wma (audio Apple et Quicktime
QuickTime mov UDP / TCP / HTTP (connexion) RTP / RDT / RTSP
AVI avi Format mpeg4
MP4 mp4 Adobe Systems (Flash Player) TCP / RTMP HTTP / RTMPT
HTTPS / RTMPS
Unicast: Le terme unicast définit une connexion réseau point à point. Transfert d'un hôte vers un autre hôte identifiés chacun par une adresse réseau unique. Les paquets de données sont routés sur le réseau suivant l'adresse du destinataire encapsulée dans la trame transmise. Normalement, seul le destinataire intercepte et décode le paquet qui lui est adressé.
Multicast: le terme multicast définit une connexion réseau multipoints. On entend par multicast le fait de communiquer simultanément avec un groupe d'ordinateurs identifiés par une adresse spécifique (adresse de groupe). En terme technique, le protocole IGMP (Internet Group Management Protocol) permet à un PC de s'enregistrer au groupe tandis que le protocole IP/Multicast permet d'envoyer un même paquet à plusieurs utilisateurs.
MMS (Microsoft Media Services) est un protocole propriétaire mis en place par Microsoft. Il est utilisé pour transférer des données en unicast, depuis un serveur de flux (Windows Media Services, initialement appelé NetShow Services) vers un client multimédia (Windows Media Player, par exemple). MMS peut être utilisé en UDP ou en TCP. Le port par défaut utilisé par MMS est : UDP/TCP 1755.
Microsoft favorise le prococole RTSP depuis 2003, avec la sortie de Windows Media Services 9 Series (et de Windows Media Player 9), rendant ainsi obsolète le protocole MMS. Pour des raisons de compatibilité descendante, le support de MMS a été gardé jusqu'à la sortie de Windows Media Player 11, en 2006, et de de Windows Media Services 2008, en 2008. Ce protocole n'est normalement pas réplicable / enregistrable, à moins d'utiliser un logiciel spécifique. C'est le cas de certains gestionnaires de téléchargement, ainsi que de Orbit Downloader, Net transport, Flashget et des logiciels libres Mplayer ou VLC media player.
RTSP (Real Time Streaming Protocol) permet de contrôler la distribution de flux multimédias (streaming) sur un réseau IP. C'est un protocole de niveau applicatif prévu pour fonctionner sur des protocoles tels que RTP/RTCP et RSVP. Les flux peuvent provenir soit de clips stockés soit d'une source temps réel (caméra, micro). RTSP a été développé par Real Networks, Netscape et l'Université de Columbia. Il est implanté sur les produits de ces sociétés.
PNM de RealMedia (aussi connu sous le nom de PNA). PNM était utilisé avant la création de RSTP. PNM n'est plus utilisé par les nouveaux serveurs mais on le rencontre encore de temps en temps.
RTMP (Real Time Messaging Protocol) créé par Adobe Systems pour son lecteur Flash. Ce protocole a trois variantes :
- Le protocol complet fonctionne sur TCP et exploite le port 1935
- RTMPT (RTMP Tunneling) encapsule RTMP dans des requêtes HTTP, afin de passer les Pare-feux
- RTMPS similaire à RTMPT, mais via une connexion sécurisée (HTTPS).
Différentes techniques de sécurisation existent pour les contenus audios ou vidéos sur internet. La première est une sécurisation d'url ou token. L'url unique est générée pour un laps de temps donné. C'est donc l'accès à l'url d'appel qui est contrôlée. La deuxième repose sur la technique des DRM basée sur l'utilisation de licence délivrée décrivant les propriétés de restriction d'accès au contenu.
Un des arguments en faveur de la lecture en continu (ceci ne concerne pas la lecture en progressif qui peut techniquement être considéré comme du téléchargement) est qu'elle permettrait d'assurer aux diffuseurs que leur vidéos ou musiques ne puissent pas être enregistrées (téléchargées et sauvegardées par l'utilisateur client) ; il existe cependant des outils dédiés (enregistrement analogique, etc.) qui permettent de contourner cette limitation.
C'est tout l'objet de cette étude!
Envisageons d'emblée ici le cas le plus simple:
La vidéo proposée à la lecture peut être diffusée en streaming dynamique , mais aussi proposée au téléchargement.
Exemple: Sur le site de l'Académie de Créteil, des vidéos de Sciences physiques sont téléchargeables à cette adresse
Il est alors possible d'enregistrer facilement une vidéo en faisant un clic droit sur le lien et, dans le menu contextuel qui apparait, en cliquant sur le choix, dont le libellé varie selon les navigateurs:
Avec Firefox 3.0.5: Faites un clic droit sur le lien "Télécharger le film au format .wmv", puis "Enregistrer la cible du lien sous..."
Avec Internet Exporer 7: Faites un clic droit sur le lien "Télécharger le film au format .wmv", puis "Enregistrer la cible sous..."
Dans les 2 cas, en cliquant sur ce choix du menu contextuel, une boite de dialogue s'ouvre...
Choisissez le dossier de destination et le nom du fichier (sans changer l'extension), et cliquez sur le bouton <Enregistrer>
Et voilà ! La vidéo est enregistrée !
La vidéo enregistrée sera lue, en double-cliquant sur son nom dans le dossier ou elle a été enregistrée. C'est le lecteur associé au format du fichier (.wmv dans notre exemple) dans votre machine qui lira cette vidéo.
Cependant, il faut bien dire que ce cas de figure simple ne se présente pas très souvent !
Dans tous les autres cas, il faudra alors recourir à l'une ou l'autre des méthodes proposées dans la suite de ce travail.
Cela demandera de votre part patience, perspicacité, ténacité, et ... modestie, quand vous aurez tout essayé ... sans succès, ce qui m'arrive encore, et qui me stimule ;-)
Bon courage et bonne chance !