TP de Streaming Vidéo - Introduction au streaming avec VLC - IR3
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
IR3 DESTABEAU Sébastien – Hugo LECLERCQ – Mathieu LOSLIER TP de Streaming Vidéo Introduction au streaming avec VLC Date de remise : le 26 novembre 2013 Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année
INTRODUCTION Ce TP est une première approche de la technologie liée au streaming. Par définition, le streaming est une technique de lecture en continu, en flux, en transit ou avec une diffusion en mode continu. Cette technique désigne un principe utilisé principalement pour l’envoi de contenu en “live”. Très utilisée sur Internet, elle permet la lecture d’un flux audio ou vidéo (cas de la Video On Demand) à mesure qu’elle est diffusée. Elle s’oppose ainsi à la diffusion par téléchargement de fichiers qui nécessite de récupérer l’ensemble des données d’une musique ou d’une vidéo avant de pouvoir l’écouter ou le regarder. De nos jours, le streaming intervient dans de nombreux domaines comme la vidéo- conférence, les WebTV et radio Web, la télésurveillance, la VOD (Video On Demand) ou encore le Peer-to-Peer. Au travers de ce TP, nous allons installer et configurer un serveur de streaming afin de mettre en pratique des diffusions passives et de la VOD (Video On Demand). Aussi, les protocoles sous-jacents à cette technologie, à savoir, entre autres, RTP, RTSP et SAP, sont à analyser. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 2
SOMMAIRE TABLE DES MATIÈRES Avant-propos ........................................................................................................................................... 4 Client de streaming VLC .......................................................................................................................... 6 1. Modules et options de VLC ......................................................................................................... 7 2. Installation de VLC ...................................................................................................................... 9 3. Ouvrir un fichier ......................................................................................................................... 10 4. Recevoir un flux réseau ............................................................................................................. 11 5. Test ............................................................................................................................................ 16 Serveur de diffusion VLC....................................................................................................................... 24 1. Test ............................................................................................................................................ 25 2. Mini-SAP server ......................................................................................................................... 40 3. Screencast ................................................................................................................................. 47 4. Wall ............................................................................................................................................ 55 5. Diffusion entre plusieurs réseaux .............................................................................................. 57 Conclusion ............................................................................................................................................. 59 Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 3
AVANT-PROPOS Il existe deux grandes sortes de diffusion. Nous allons découvrir leurs spécificités dans cette courte partie. Tout d’abord, nous avons la diffusion passive, dans laquelle un film est envoyé par un serveur et visualisé par un ou plusieurs clients. Le streaming est géré par le serveur et le client n’a aucun droit dessus. Il ne peut donc effectuer aucune action directe sur le serveur (avancer ou se déplacer dans une vidéo). Schéma 1 : Communication d’une diffusion passive client-serveur Schéma 2 : Architecture client-serveur d’une diffusion passive Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 4
Si un client s’abonne à un groupe multicast, il recevra un flux identique aux autres membres du groupe et ils le regarderont en même temps et simultanément. Ce mode de transmission est utilisé le plus souvent lors du streaming en temps réel comme les diffusions de vidéoconférences par exemple. Puis, nous avons la diffusion active, c’est l’exemple de la vidéo à la demande (VOD) pour laquelle chaque client demande son propre flux. Aucun serveur de diffusion spécifique n’est requis. Toutefois, le client doit être capable de visionner le flux en temps réel au lieu de le télécharger intégralement. Cette demande s’effectue à partir d’un serveur Web et les échanges se font par les protocoles HTTP, FTP basé sur du TCP ou encore RTP / RTCP pour communiquer entre machines. Les paquets perdus sont retransmis jusqu’à réception. Il n’y a pas de qualité de connexion à l’utilisateur car la diffusion ne s’adapte pas à cela. Il est recommandé de proposer sur le serveur plusieurs encodages de qualité d’un même fichier. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 5
CLIENT DE STREAMING VLC VLC (Video LAN Client) est à l’origine le logiciel client du projet VideoLan. Il peut être utilisé en tant que serveur pour diffuser des fichiers MPEG-1, MPEG-2 et MPEG-4, des DVDs ou de la vidéo en temps réel sur un réseau en unicast ou multicast; ou utilisé en temps que client pour recevoir, décoder et afficher des flux vidéo sous de nombreux systèmes d’exploitation. Pour résumer, c’est à la fois un lecteur et un serveur multimédia multiplateforme. Il gère aussi l’affichage d’un grand nombre de périphériques de capture telles que les cartes TV et les webcams. VLC fonctionne sur de nombreuses plateformes : Linux, Windows, Mac OS X, BeOS, BSD, Solaris, Familiar Linux, Yopy/Linupy et QNX. Il est capable de lire : - Des fichiers MPEG-1, MPEG-2 et MPEG-4 / DivX depuis un disque dur, un lecteur de CD-ROM, ... - Des DVDs et VCDs depuis une carte satellite (DVB-S) - Des flux MPEG-1, MPEG-2 et MPEG-4 envoyés sur le réseau par un VLS ou un VLC VLC peut également être employé en tant que serveur pour diffuser : - Des fichiers MPEG-1, MPEG-2 et MPEG-4 / DivX - Des DVDs - Depuis une carte d’encodage MPEG Vers : - Une machine (c’est-à-dire à une adresse IP) : ceci est appelé unicast - Un groupe dynamique de machines que les clients rejoignent ou quittent (une adresse IP multicast) : ceci est appelé multicast Environnement Pour mettre en oeuvre les technologies liées au streaming, nous utiliserons une architecture réseau très simpliste de la forme suivante : Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 6
Schéma 3 : architecture réseau classique pour le streaming Ainsi, nous pouvons observer la présence d’une machine faisant office de serveur de streaming, d’adresse IP 172.17.2.3, 172.17.2.3 et un client, d’adresse IP 172.17.2.4, 172.17.2.4 qui va pouvoir lire le flux envoyé. Dans ce qui suit, suit, nous allons donc utiliser VLC en tant que client en premier lieu. 1. Modules et options de VLC VLC utilise un système modulaire, ce qui permet un ajout simplifié de nouvelles nouvelle fonctions et de nouveaux formats. Par défaut, l’installation de VLC comporte tous les modules. Si vous avez installé VLC par un fichier binaire, vous aurez donc tous les modules par défaut. Les es informations concernant le système modulaire de VLC peuvent être retrouvées à l’adresse http://www.videolan.org/doc/vlc http://www.videolan.org/doc/vlc-user- guid/fr/ch02.html. Quels sont ses modules et leurs objectifs objectifs (voir le site VideoLAN) ? Les modules d’entrée Ceux-ci ci permettent à VLC de lire depuis différentes sources. VLC essaie de choisir le module le plus adapté au moment de la lecture. Pour forcer l’utilisation d’un module particulier, il suffit de lancer VLC avec l’option --access NOM_DU_MODULE. NOM_DU_MODULE Les démultiplexeurs Dans un flux, les signaux vidéo et audio sont toujours inclus dans un format “conteneur”. Les démultiplexeurs extraient les flux de ce conteneur et les envoient aux décodeurs. Par exemple, un fichier fichier AVI peut contenir une vidéo encodée en Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 7
MPEG-4 ou une vidéo non compressée. AVI est seulement un format de stockage. Il n’est pas un format de compression. Les décodeurs Ces modules permettent à VLC de supporter de nombreux codes (formats de compression). Les modules de sortie vidéo Les modules de sortie vidéo permettent d’afficher de la vidéo sur votre écran. Au lancement, VLC essaie de deviner le module de sortie vidéo le plus adapté à votre système. Si vous désirez toutefois lancer un module particulier, lancez VLC avec l’option --vout NOM_DU_MODULE. Les modules de filtre vidéo Ces modules vous permettent de modifier l’image (désentrelacement, réglage du trio teinte / contraste / saturation, recadrage, etc.). Pour les activer, utilisez VLC avec l’ option --filter filter1, filter2, ... Les modules de sortie audio Ces modules vous permettent de choisir le système de sortie du son. VLC essaie de deviner le module de sortie audio le plus adapté à votre système. Si vous souhaitez toutefois forcer l’utilisation d’un module spécifique, lancez VLC avec l’option --aout NOM_DU_MODULE. Les modules d’interface Ces modules vous permettent de choisir une ou des interfaces (graphique ou de contrôle). Les autres modules Il est difficile de tous les catégoriser. Néanmoins, nous pouvons parler du module sout qui offre les services d’un serveur de streaming. Il sera employé dans la prochaine partie du TP. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 8
Désormais, nous allons passer à l’installation des outils nécessaires. nécessaires 2. Installation de VLC Les deux machines de l’environnement de travail étant sous le système d’exploitation Linux avec une distribution Debian, l’installation l’installation de VLC se fait au travers des commandes suivantes : apt-get update apt-get install vlc Pour lancer VLC, il suffit de taper vlc en ligne de commande d’un terminal. Vous pouvez tout aussi bien le lancer en tant qu’interface graphique depuis le menu principal dans Applications > Son et vidéo > Lecteur multimédia VLC. VLC Attention, vous pouvez rencontrer rencontrer l’erreur suivante au lancement de VLC en mode root : Capture 1 : Erreur au lancement de VLC en mode root Pour pallier à cela, vous devrez éditer le fichier /usr/bin/vlc dont le contenu est le suivant : Capture 2 : Edition du fichier /usr/bin/vlc /usr/bin/v Et remplacer geteuid par getppid. getppid Capture 3 : Remplacement de geteuid par getppid Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 9
Ensuite, VLC peut se lancer normalement en tant que root. 3. Ouvrir un fichier Pour ouvrir un fichier, il existe deux manières. Soit nous passons par l’interface graphique de VLC en accédant au menu Média > Ouvrir un fichier puis en sélectionnant la vidéo à lancer, lancer, soit nous utilisons la ligne de commande suivante : vlc –vvv vvv MON_FICHIER.mpg En ligne de commande, l’option –vvv indique le mode verbeux le plus élevé. Capture 4 : Mode verbeux de VLC Dans la grande majorité des cas, la reconnaissance du type de fichier se fait automatiquement. Nous allons maintenant passer à l’échelle d’un réseau local et tenter de recevoir un flux vidéo sur notre machine via le réseau. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 10
4. Recevoir un flux réseau VLC est capable de lire des flux provenant du réseau tels que HTTP, UDP, RTP ... Pour rappel, RTP (RealTime Transport Protocol) est un protocole de transport temps-réel au dessus du protocole UDP et a pour rôle d’acheminer les données. Il contrôle cet acheminement avec le protocole RTCP (RealTime Transport Control Protocol). Pour chaque média à acheminer, que ce soit de l’audio ou de la vidéo, un seul canal RTP et un seul canal RTCP sont utilisés simultanément. Ainsi, leur couplage va même jusqu’à la désignation d’un numéro de port pair pour RTP et un numéro de port impair immédiatement supérieur pour le protocole RTCP. RTP est un protocole à état géré par des méthodes de contrôle du flux telles que PLAY, SETUP, PAUSE, RECORD, entre autres. Quelle est la commande ainsi que les options de l’interface graphique pour recevoir un flux unicast UDP / RTP (envoyé par VLC ou par le stream output de VLC) ? En supposant que la machine serveur envoie un flux unicast UDP / RTP sur le port 1234, le client peut recevoir ce dernier avec la commande suivante : %vlc rtp://172.17.2.4:1234 Via l’interface graphique de VLC, il suffit de se rendre dans Média > Ouvrir un flux réseau et enfin, d’indiquer l’URL suivante : Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 11
Capture 5 : Configuration d’un flux de streaming via UDP côté client Capture 6 : Capture d’un flux de streaming via RTP côté client Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 12
Quelle est la commande ainsi que les options de l’interface graphique pour recevoir un flux HTTP ? Toujours en supposant que la machine serveur envoie un flux HTTP, le client peut recevoir ce dernier avec la commande suivante : %vlc –vvv vvv http://172.17.2.4/backwaters.mpeg En supposant que la vidéo backwaters.mpeg est à la racine /var/www du serveur Web, on peut passer, de la même manière, via l’interface graphique : Capture 7 : Configuration d’un flux de streaming via HTTP côté client Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 13
Capture 8 : Configuration du port, du chemin et du codec d’un flux de streaming via HTTP côté serveur Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 14
Capture 9 : Configuration du codec d’un flux de streaming via HTTP côté serveur Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 15
Capture 10 : Capture d’un flux de streaming via HTTP côté client 5. Test Ce premier test consiste à lire un flux HTTP depuis un serveur Web. Dans un premier temps, nous allons installer Apache sur la machine serveur. La commande pour installer le serveur Web est la suivante : apt-get install apache2 Puis, nous allons placer un fichier vidéo comme backwaters.mpeg dans le répertoire /var/www de la machine qui fait office de serveur. Ainsi, elle sera accessible depuis le protocole HTTP. Enfin, nous allons lancer un client VLC, quel que soit le moyen, pour lire cette vidéo et analyser en détail le contenu des messages échangés entre le client et le serveur avec Wireshark. Nous lançons VLC : root@pccop0b002b-04:~# vlc Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 16
Nous allons pouvoir analyser en détail le contenu des messages échangés entre le client et le serveur par Wireshark. De la même manière qu’auparavant, nous passons par l’interface graphique pour lire la vidéo via HTTP : Capture 11 : Configuration d’un flux de streaming via HTTP côté client Le résultat est donc le suivant : Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 17
Capture 12 : Capture d’un flux de streaming via HTTP côté client Nous avions au préalable lancé Wireshark en mode capture pour écouter le réseau et nous avons filtré les paquets pour n’écouter que les trames TCP et HTTP qui nous intéressent. Dans ce qui suit, nous désignerons l’adresse IP 172.17.2.13 pour identifier le client et l’adresse IP 172.17.2.4 pour identifier le serveur. Nous avons relevé ces trames concernant VLC en mode HTTP : Capture 13 : Capture Wireshark des trames de VLC en mode HTTP Les trois premières trames représentent la connexion TCP par le three-hand-shaking du protocole TCP (SYN, SYN + ACK, ACK). Concentrons-nous désormais sur la trame du GET. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 18
Analyser la méthode GET. Quelle est la valeur de Range ? Expliquer. Capture 14 : Trame du GET de la vidéo backwaters.mpeg en mode HTTP Cette requête d’obtention de la vidéo backwaters.mpeg fait intervenir de nombreuses trames TCP suivant le GET pour fournir cette vidéo au client. Capture 15 : Requête HTTP détaillée de la trame GET d’obtention de la vidéo Les informations intéressantes à ce niveau-là sont la version du client VLC et le champs User-agent (vlc/1.1.3 LibVLC/1.1.3) possédant un Range de 0 bytes car il s’agit du point de démarrage de la vidéo. Quelle est la taille et le type de la vidéo ? Ces champs sont véhiculés dans quel message ? Comme vous avez pu le constater dans la capture précédente, Wireshark ne nous a pas fournit d’informations concernant la taille de la vidéo en octets (il n’y a pas de champs Content-Length présent) ni même le type de vidéo (il n’y a pas de champs Content-Type). Nous ne sommes donc pas en mesure de les fournir dans cette question. Nous avons dû chercher un paquet perdu dans la liste des trames capturées par Wireshark car nous ne trouvions vraiment pas d’information à ce sujet. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 19
Capture 16 : Taille et type de vidéo précisé dans la trame C’est dans une trame utilisant le protocole HTTP//1.1, catégorisé comme “206 Partial Content(video/mpeg)” (Code HTTP 206 Contenu partiel d’une vidéo avec codec MPEG) que nous avons pu trouver les informations suivantes : - La taille du contenu de ce paquet : Content-Length : 200000 octets - La taille de la vidéo spécifiée de valeur 25696260 octets (soit 24,5 Mo) du champs : Content-Range : bytes 25496260-25696259 = 1 - Le type de la vidéo : Content-Type : video/mpeg et aussi dans l’entête Media Type : video/mpeg Connaissant la taille de la vidéo, VLC peut ainsi calculer plus facilement l’avancement dans le temps quand l’utilisateur change le curseur de position dans l’interface client de VLC. HTTP permet d’initialiser ou de réinitialiser le flux vidéo. Il agit comme un contrôleur et transporte les messages d’informations sur la vidéo, comme la taille totale, la position dans la lecture ou encore le type de la vidéo. TCP, quant à lui, se charge uniquement de véhiculer le contenu de la vidéo. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 20
La technique représente une diffusion passive ou à la demande ? Il s’agit bien d’une vidéo à la demande (c’est-à-dire une diffusion active) car le client peut agir sur le champs Range afin de déplacer le curseur de la vidéo. Pour preuve, la capture ci-dessous dessous dont le champs Range vient d’obtenir la nouvelle valeur de 25496260 bytes lors d’un clic pour faire avancer la lecture de la vidéo : Capture 17 : Déplacement du curseur de la vidéo vidéo dans le client VLC Lorsqu’on déplace le curseur de position du film, qu’est ce qui change dans les messages échangés avant et après cette action ? éplacement du curseur de la vidéo dans le client VLC Capture 18 : Nouveau déplacement Dans la capture ci-dessus,, nous remarquons que le client est obligé d’émettre une nouvelle trame GET à chaque changement de position du curseur dans la vidéo. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 21
Ainsi, cela change la valeur du Range. Nous avons donc un nouveau Range de 40480 bytes. Le serveur déplace son curseur de lecture et envoie la vidéo à la position demandée par le client. Pour tester le plugin VLC pour mozilla, qui permet à l’utilisateur de ne pas s’embêter à ouvrir son logiciel VLC, réalisez et testez une page de test contenant un code HTML (n’oubliez pas d’installer le paquet mozilla-plugin- vlc). Pour ce qui suit, nous avons installé le paquet mozilla-plugin-vlc via la commande : apt-get install mozilla-plugin-vlc Pour tester le plugin VLC pour mozilla, qui permet à l’utilisateur de ne pas s’embêter à ouvrir son logiciel VLC, nous avons réalisé et testé une page de test contenant le code HTML suivant : Demo of VLC mozilla plugin Demo of VLC mozilla plugin - Example 1 Play video1 Pause video1 Stop video1 Fullscreen Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 22
Commenter ce code. Ce code HTML contient ce qu’il faut pour charger une vidéo à l’adresse http://172.17.2.4/backwaters.mpeg du localhost et la jouer en boucle, en lecture automatique, de taille 400 x 300 pixels, avec le plugin VLC pour le navigateur Web. Il y a des outils de contrôle Javascript permettant d’effectuer une lecture (Play), une pause (Pause), d’arrêter la lecture (Stop) et de mettre en plein écran (Fullscreen). Nous obtenons donc ceci dans un navigateur Web : Capture 19 : Player de streaming intégré à une page Web Comment désactiver la lecture en boucle ? Pour désactiver la lecture en boucle, nous remplaçons loop=”yes” par loop=”no” dans le code HTML de la page Web. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 23
SERVEUR DE DIFFUSION VLC Le stream output du VLC permet à ce dernier de servir de serveur de streaming et non de client et possède des fonctionnalités très étendues : - Envoi en unicast et en multicast, en Ipv4 ou en Ipv6, tout ce que VLC est capable de lire par UDP/RTP ou HTTP - Sauvegarde du flux d’entrée vers un fichier AVI, PS, TS ou OGG - Transcodage du flux d’entrée et envoi Le stream output possède une puissante architecture qui utilise des modules. Chaque module apporte des fonctionnalités et il est possible de chaîner les modules pour combiner ces possibilités. Quels sont les modules ainsi que leurs fonctionnalités ? Le modules standard Un des modules les plus intéressants, cité en début de document, est le module sout qui offre à VLC la panoplie complète pour devenir un serveur de streaming. Il est en charge de l’envoi des flux sur le réseau, qui peuvent être multiplexés. La commande suivante permet de définir une sortie au format HTTP sur l’interface d’écoute HTTP : vlc –sout ‘#standard{access=http, dst=192.168.1.61:8080} Si nous souhaitons multiplexer la sortie, voici un exemple de commande pour un flux multiplexé au format Transport Stream : vlc “in” –sout ‘#standard{access=http, mux=ts, dst=192.168.1.61:8080} Les modules d’affichage (Display) Avec ce module, le serveur peut afficher le flux. Il est couplé à duplicate. Le module RTP Le serveur peut envoyer un flux en RTP avec l’option rtp. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 24
Le module de transcodage (Transcode) Après la lecture d’un flux, VLC peut le diffuser sous un format différent. Ainsi, transcode permet de modifier ce format de flux et son taux de compression. Par exemple, cela permet au serveur de définir un nouveau flux MPEG-2 en sortie, où l’on peut paramétrer son taux de compression (option vb), le type de format de sortie audio (option mpga) et le taux de compression audio (option ab), par la commande suivante : vlc “in” –sout=’#transcode{vcodec=mp2v, vb=600, scale=1, acodec=mpga, ab=128} Le module de duplicata (Duplicate) Cela offre au serveur la fonctionnalité de dupliquer un flux vers une nouvelle chaîne tout en laissant la possibilité de le visionner simultanément. Cette liste de modules est non-exhaustive et le reste peut être consulté sur le site officiel de VLC. Nous sommes fin prêt pour tester notre serveur VLC. 1. Test Effectuer une diffusion unicast en UDP / RTP grâce au serveur VLC et un client VLC et analyser en détail le contenu des messages échangés. Du côté du serveur Pour commencer, le protocole RTP (RealTime Protocol) permet le transport des données soumises à des contraintes de temps réel, typiquement de la vidéo et de l’audio. Ainsi, pour diffuser notre vidéo backwaters.mpeg via un flux RTP, nous pouvons utiliser l’interface graphique de VLC. Il suffit de se rendre dans le menu Média > Flux > onglet Fichier et de sélectionner le fichier à diffuser. Nous passons à la suite de la configuration de la diffusion en cliquant sur le bouton Stream. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 25
Capture 20 : Configuration d’une diffusion multicast côté serveur – partie 1 Nous allons continuer la configuration en appuyant sur le bouton Next. Next Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 26
Capture 21 : Configuration d’une diffusion multicast côté serveur – partie 2 Enfin, nous pouvons spécifier le protocole de transport utilisé pour la diffusion du flux vidéo. Puis, nous allons ajouter la destination via le bouton Add.. Ainsi, il est possible d’ajouter une multitude de destinations différentes pour par exemple partager une vidéo avec plusieurs personnes personnes toujours de manière à respecter de l’unicast. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 27
Capture 22 : Configuration d’une diffusion multicast côté serveur – partie 3 Maintenant, nous pouvons spécifier le port UDP de destination ainsi que le conteneur de transport utilisé (ici, MPEG Transport Stream). Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 28
Capture 23 : Configuration d’une diffusion multicast côté serveur – partie 4 A ce stade, la configuration est presque terminée. Nous pouvons modifier le TTL par exemple, ainsi que diverses options. Nous pouvons remarquer que la commande VLC est construite avec tous les paramètres appliqués à notre configuration. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 29
Capture 24 : Configuration d’une diffusion multicast côté serveur – partie 5 Ainsi, nous utilisons le module –sout pour spécifier une diffusion du flux. Au passage, nous pouvons observer ici que la vidéo est transcodée. Cela signifie que nous réencodons la vidéo avec le codec MPEG-2 MPEG mp2v avec un bitrate de 800 Kbps.. Aussi, nous réencodons l’audio avec un bitrate de 128 8 Kbps (avec le codec mpga). ). Nous spécifions aussi le nombre de canaux à 2 (cela correspond aux différents flux, vidéo et audio). Enfin, nous précisons que nous utiliserons le module rtp pour envoyer un flux RTP en sortie avec pour destination dst = 172.17.2.13. 172.17 Il suffit désormais de cliquer sur le bouton Stream pour commencer la diffusion de la vidéo. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 30
Du côté du client Sur le client, la démarche est plus rapide. Il suffit, comme précédemment, de se rendre dans le menu Média > Ouvrir un flux réseau et d’entrer l’URL du réseau de diffusion dans l’onglet Réseau : rtp://172.17.2.4:5004 Les flux audio et vidéo sont-ils sont séparés ? Montrer et expliquer. Capture 25 : Capture Wireshark des flux vidéo et audio de la diffusion côté client Cette capture Wireshark montre les échanges effectués entre le client et le serveur au début de la diffusion. Nous pouvons remarquer que le premier paquet ICMP “destination unreachable”” nous indique que le client n’avait pas encore ouvert son port 5004. De ce fait, lorsque que le serveur a tenté d’envoyer un flux unicast vers le client sur le port UDP 5004, le client lui a indiqué que son port 5004 était fermé. Par la suite, le client a accepté tous les flux UDP. En analysant un paquet UDP envoyé par le serveur, nous pouvons constater que Wireshark ne reconnaît pas le flux RTP car nous utilisons un port “exotique” 5004 pour la diffusion de notre flux. Afin que le flux soit reconnu, il suffit d’utiliser la méthode Decode As dans le menu Analyze : Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 31
Capture 26 : Méthode Decode As du menu Analyze de Wireshark Dès lors, nous obtenons : Capture 27 : Analyse des trames RTP Il est maintenant plus facile d’analyser les échanges des trames RTP. Voici le contenu du premier paquet envoyé par le serveur : Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 32
Capture 28 : Contenu du premier paquet envoyé par le serveur Nous pouvons constater qu’il existe différents PID,, chacun correspond aux différents flux audio et vidéo. Une des informations les plus importantes est le payload type, définit ici en tant que MPEG-2 MPEG TS (Transport Type). ). Cette information permet au client VLC de savoir que les différents flux seront bien multiplexés dans des TS (Transport Stream). ). Ainsi, chaque flux sera identifié à l’aide d’un PID, ici 75 en décimal soit 0X4b en hexadécimal. Les flux audio o et vidéo sont donc bien séparés. Effectuer une diffusion multicast en HTTP grâce au serveur VLC et un client VLC (Ne pas oublier que le port HTTP par défaut de VLC est 8080) et analyser en détail le contenu des messages échangés. De la même manière que pour la question précédente sur le serveur, nous lançons la diffusion en HTTP : Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 33
Capture 29 : Configuration de la diffusion multicast HTTP côté serveur – partie 1 Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 34
Capture 30 : Configuration de la diffusion multicast HTTP côté serveur – partie 2 Cette configuration correspond à la commande suivante : vlc backwaters.mpeg :sout='#transcode{vcodec=mp2v,vb=800,scale=1,acodec=mpga,ab=128,channe ls=2,samplerate=44100}:standard{access=http,mux=ts,dst=172.17.2.4:8080}' Dans ce scénario, nous utilisons le module standard (avec le paramètre access=http)) pour définir notre flux de sortie en tant que flux HTTP. Nous transcodons de la même manière que précédemment. Nous préciserons cependant que nous souhaitons multiplexer notre no flux dans des TS. En RTP, RTP nous avions beaucoup moins de choix quant à l’utilisation d’autres conteneurs. Pour le client, il suffit d’ouvrir un flux réseau et de spécifier l’url : Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 35
Capture 31 : Configuration de la diffusion multicast HTTP côté client Dans la capture ci-dessus, dessus, nous n’avons pas besoin de spécifier le nom de la vidéo. Il suffit juste de réceptionner le flux en HTTP. Pour cela, nous avons relevé les paquets échangés depuis Wireshark : Capture 32 : Capture Wireshark des paquets échangés entre le client et le serveur en diffusion multicast HTTP Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 36
Nous allons détailler la requête GET envoyée par le client dans la capture suivante : Capture 33 : Détails de la requête GET du client Nous remarquons que l’entête Range est à 0. En effet, et, il ne s’agit pas ici de diffusion en Video On Demand. Le serveur envoie la vidéo dans l’état actuel où elle se trouve. Quelle est la différence entre une diffusion unicast en UDP / RTP et HTTP ? Les trames d’une diffusion unicast en UDP / RTP comporte des entêtes moins grosses que celles utilisant le protocole HTTP. RTP doit respecter des contraintes de temps réel, ce que HTTP ne propose pas. RTP ne supporte que le format MPEG-2 MPEG tandis que HTTP est apte à en supporter bien plus comme l’AVI, l’OGG, l’O ... Au niveau des échanges lors de la connexion, seul HTTP initie une connexion. Ainsi, il évite toute inondation dûe aux requêtes de demande de l’état du port. Effectuer et analyser avec Wireshark une diffusion multicast en utilisant UDP / RTP. Pour cet exercice, nous conservons notre serveur, notre premier client et nous configurons un deuxième client. Pour résumer, l’adresse IP 172.17.2.4 correspond à l’adresse IP du serveur, 172.17.2.8 et 172.17.2.16 sont les adresses IP des clients. L’avantage e du multicast est l’importante économie offerte en bande passante lors de la diffusion du flux. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 37
Capture 34 : Capture Wireshark des trames UDP entre les clients et le serveur Si nécessaire, il faut régler le TTL lors de la configuration de l’émission en multicast afin de pouvoir aisément transmettre le flux aux destinations. Par défaut, le TTL est à 1 car il n’y a qu’un seul voisin direct lors de nos démarches en salle de TP. Nous répétons toutes les démarches du serveur pour émettre le flux multicast aux clients et des clients pour se connecter en RTP au flux multicast du serveur. Les relevés Wireshark de la capture ci-dessous prouvent que les échanges entre les clients et le serveur fonctionnent bien et la vidéo est bien retransmise chez les deux clients. Quand nous étudions plus précisément les trames RTP provenant du décodage (option Decode As de Wireshark avec un filtrage sur RTP), nous remarquons que comme précédemment, le flux RTP est bien arrivé à destination de chaque client. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 38
Capture 35 : Décodage des trames RTP via l’option Decode As de Wireshark Pour automatiser l’abonnement automatique à un groupe UDP multicast tout en utilisant le plugin mozilla sur le client, réalisez une page de test spécifique contenant le code HTML indiqué dans l’énoncé. Pour automatiser l’abonnement automatique à un groupe UDP multicast tout en utilisant le plugin mozilla sur le client, nous allons réaliser une page de test spécifique contenant le code HTML suivant : Demo of VLC mozilla plugin Demo of VLC mozilla plugin - Example 2 Play video2 Stop video2 Fullscreen Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 39
Nous obtenons donc ceci dans un navigateur Web à l’adresse http://172.17.2.4 : Capture 36 : Player de streaming intégré à une page Web du client pour un flux RTP multicast Comme nous accédons bien à la vidéo depuis le navigateur du client, nous considérons que le client reçoit bien le flux multicast et par conséquent qu’il est bien inscrit au groupe multicast. Effectuer des tests à partir de plusieurs clients. Les tests sont-ils concluants ? Les tests sont concluants car dans la pratique, nous avons été en mesure de reproduire l’écran de la capture ci-dessus dans chacun des clients et de recevoir le flux multicast que nous sommes censés obtenir après s’être inscrit au groupe. Nous remarquons que le bouton de pause n’existe pas. Cela se justifie par le fait que ce n’est pas de la Video On Demand mais bien une émission multicast en RTP d’un flux vidéo. 2. Mini-SAP server On peut ajouter un service de découverte de services utilisant le standard SAP / UDP sur la solution VideoLAN. SAP signifie Session Announcement Protocol. Le mini- SAP-server envoie des annonces indiquant les programmes multicast sur le réseau Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 40
en Ipv4 ou en Ipv6 et les VLCs clients reçoivent ces annonces puis y ajoutent automatiquement les programmes annoncés à leur liste de lecture. Cela permet à un client d’avoir la liste des programmes disponibles pour qu’il puisse s’y connecter. Le protocole SDP (Session Description Protocol) est utilisé pour décrire les flux RTP de SAP. Dans ce qui suit, nous mélangerons un peu les réponses aux questions des méthodes 1 et 2 vu qu’elles se chevauchent dans la pratique. Méthode 1 Dans la méthode 1, nous allons utiliser l’option SAP fournie par l’outil VLC. Après avoir analysé en détail son fonctionnement, nous vérifierons la présence des programmes de diffusion annoncés. Utiliser l’option SAP de l’outil VLC Pour cela, il faut se rendre dans l’onglet View > Playlist > Network Streams (SAP) pour consulter la playlist des programmes de diffusion annoncés. Capture 37 : Playlist SAP Nous sélectionnons notre programme défini au préalable avec notre serveur. Cela charge dans la capture suivante, le programme de la TV_DES_GAGNANTS. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 41
Capture 38 : Lecture d’un flux proposé dans la playlist du SAP Dans la méthode 2, nous allons installer et configurer un mini-SAP-server. Après avoir analysé en détail son fonctionnement, nous vérifierons la présence des programmes de diffusion annoncés. Installer et configurer un mini-SAP-server Tout d’abord, nous allons télécharger le fichier à l’adresse http://www.videolan.org/streaming/. Nous allons ensuite l’extraire, le configurer, le compiler puis l’installer via les commandes suivantes : %tar Jxf miniSAPserver-version.tar.gz %cd miniSAPserver-version %./configure # seulement si la version est supérieure ou égale à la 0.2.3 %make Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 42
Il faut ensuite configurer le fichier sap.cfg pour faire fonctionner correctement le serveur. Les parties les plus importantes sont l’adresse de multicast pour lequel s’abonner et le Time-To-Live. Voici le notre, configuré pour offrir les services d’un programme PROGRAM_TV accessible à partir du groupe GROUPE_DES_GAGNANTS dont l’adresse IP multicast et le port sont définis. Toute information en rouge dans ce qui suit est propre à notre configuration du serveur SAP. # sap.cfg - Configuration file of the mini SAP server # Global miniSAPserver options [global] # Number of seconds between announces. 5 is default. Internet announces better use 30. sap_delay=5 # The network interface on which to stream. #interface=eth0 # Then you should have one "[program]" section per program announced # Note that only announces for MPEG2 TS streams are supported. # Though announces of other types of streams may work for some clients, # they will not be compliant to the announce spec. and are not at all # guaranteed to work. # IPv4 example [program] # Name of the program (as it will show up in the VLC playlist) name=PROGRAM_TV # Name of the streaming entity (organisation) user=videolan # DNS or IP of the machine on which you run the stream machine=streamer.domain.org # Website of the streaming entity (organisation) site=http://www.domain.org # Multicast IP address of the program Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 43
address=239.255.12.38 # UDP Port port=1234 # The name of the playlistgroup your announce will be part of in the VLC playlist playlist_group=GROUPE_DES_GAGNANTS # If you wish to send custom SDP to clients, specify the full path to the # SDP file #customsdp=/path/to/broadcast.sdp # IPv6 example [program] name=TV2 user=videolan machine=streamer.domain.org site=http://www.domain.org address=ff08::1 port=1234 # RTP example [program] type=rtp name=TV_DES_GAGNANTS user=videolan machine=streamer.domain.org site=http://www.domain.org address=227.65.43.20 port=1234 Pour démarrer le serveur, il faut exécuter la commande suivante : %./sapserver –c sap.cfg Nous pouvons tout aussi bien effectuer la démarche au travers de l’interface graphique de VLC : Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 44
Capture 39 : Configuration du serveur SAP via l’IHM de VLC Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 45
Analyser en détail le fonctionnement Dès le démarrage du serveur SAP, le client reçoit les trames suivantes : Capture 40 : Trames SAP / SDP du serveur SAP au client Notre adresse multicast est désignée ici par 239.255.255.255. Le client 172.17.4.16 écoute le flux provenant des annonces du serveur SAP. Capture 41 : Etude plus poussée d’une trame SAP / SDP Quand nous observons les détails de la deuxième trame SAP / SDP, nous observons bien l’encapsulation autour des paquets SAP et SDP. Toutes deux contiennent des informations précieuses sur le type d’émission (ici, en broadcast du serveur Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 46
miniSAPserver), le port d’écoute (1234), le nom du programme (TV_DES_GAGNANTS), l’encodage (UTF-8), le format (MP2T/9000). Vérifier la présence des programmes de diffusion annoncés Pour éviter de répéter inutilement les mêmes captures, les programmes de diffusion, comme vu dans la méthode 1, sont bien présents et sont correctement affichés chez le client. 3. Screencast VLC permet de réaliser très facilement un screencast, c’est-à-dire une capture vidéo de son écran, comme un screenshot mais sous forme de vidéo. Montrer en détail les étapes pour capturer et diffuser une vidéo de votre écran. Un screencast, aussi appelée capture vidéo de l’écran, est un enregistrement vidéo d’un écran d’ordinateur accompagné la plupart du temps d’une narration audio. De la même façon qu’une capture d’écran (screenshot) peut être vue comme une photo de ce que l’utilisateur voit à l’écran, la capture vidéo (screencast) peut être assimilée à un film de ce que l’utilisateur voit à l’écran. Il existe deux types de screencast : - Enregistrement dans un fichier - Diffusion en streaming Nous allons détailler les deux fonctionnalités. Screencast dans un fichier Dans un premier temps, il faut ouvrir une fenêtre VLC, puis aller dans Média sur la barre des tâches et cliquer sur l’onglet Ouvrir un périphérique de capture.... Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 47
Capture 42 : Sous-menu d’accès à l’option de screencast dans un fichier Cette action fait apparaître une fenêtre de paramétrage : Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 48
Capture 43 : Fenêtre de paramétrage du screencast de fichier Ensuite, il faut sélectionner le mode de capture. Ici, il s’agit du mode Bureau. Puis, il faut sélectionner le champs débit d’image pour la capture.. Ici, nous avons choisit 10 ips (images par seconde). seconde). Pour finir, il faut cliquer sur le bouton Lire pour faire démarrer la séquence d’enregistrement. Voici une capture d’écran de la phase d’enregistrement du screencast : Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 49
Capture 44 : Phase d’enregistrement du screencast de fichier Screencast en streaming Pour le streaming, nous allons sur la même fenêtre que pour l’enregistrement en fichier : Capture 45 : Sous-menu d’accès à l’option de screencast en streaming Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 50
Quand nous cliquons sur Ouvrir un périphérique de capture, la fenêtre de configuration s’ouvre. Nous sélectionnons le mode de capture Bureau et nous changeons le débit d’images à 10 image/s comme précédemment, mais cette fois, nous choisirons le bouton Diffuser comme ci-dessous : Capture 46 : Fenêtre de paramétrage du screencast en streaming Ensuite, nous arrivons sur la page de paramétrage en 3 étapes : - La sélection de la source de diffusion. Ici, il ne faut rien changer si nous avons sélectionné auparavant le mode de capture Bureau. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 51
Capture 47 : Sélection de la source de diffusion - Les destinations et le transcodage de la vidéo. vidéo. Ici, nous nou avons choisi d’ajouter un destinataire UDP. Capture 48 : Choix des destinations et transcodage vidéo Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 52
Lors de l’ajout de la destination, il ne faut pas oublier de cliquer sur Ajouter et renseigner l’adresse de destination ainsi que le port. Capture 49 : Ajout de la destination Du fait que le test a été effectué à domicile, l’adresse IP du client est 192.168.1.61. Capture 50 : Informations sur le client Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 53
- Les options où l’on renseigne par exemple le TTL. En TP, aucun changement n’était nécessaire. A domicile, nous avons du changer le TTL car il y avait plusieurs switchs entre le serveur et le client. Capture 51 : Autres options de configuration Pour terminer, nous appuyons sur le bouton Diffuser.. Cela lance l’enregistrement de la vidéo dont voici la capture de la fenêtre VLC en mode de diffusion : Capture 52 : VLC en mode de diffusion streaming Pour le client, les configurations restent les mêmes que dans l’exercice de transmission par UDP. Le client affiche affiche bien l’écran du serveur en live : Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR33 Informatique et Réseaux 3ème année 54
Capture 53 : Capture du live provenant du serveur chez le client 4. Wall VLC permet de créer un mur d’écran, c’est-à-dire plusieurs fenêtres VLC, en utilisant le module --vout-filter avec l’option wall. Montrer la commande ainsi que le résultat. Comme cité en introduction, VLC permet de faire de nombreuses choses. Dans cet exercice, nous allons montrer comment réaliser un mur d’écrans avec plusieurs fenêtres VLC. En tout premier lieu, nous allons ouvrir VLC et aller dans Outils sur la barre de tâches. Puis, nous allons cliquer sur l’onglet Liste des effets et filtres. Université ESIPE – Marne-la-Vallée Promotion 2013 – 2014 IR3 Informatique et Réseaux 3ème année 55
Vous pouvez aussi lire