TP1

Transcription

TP1
TP1b Serveur Multimédia – Serveur de streaming VLC TP en salle 13 « root », sous environnement Linux. Pour ce TP, FFMPEG et VLC sur des machines Linux en vue d’administrer la gestion de diffusion de ressources multimédia. VLC est bien connu comme lecteur multimédia supportant un grand nombre de codecs audio et vidéo. Ce projet est issu d’une collaboration de développeurs dont la plupart se sont connus à l’Ecole Centrale de Paris, VLC est gratuit et open source sous licence GNU/GPL. Moins connu, VLC propose une solution plutôt aboutie pour le streaming multimédia. Précisément, il permet de diffuser des flux audio et/ou vidéo sur tout type de réseaux en mode broadcast ou VOD. VLC peut être installé sur toutes les plateformes, mais nous nous concentrerons sur la plateforme Linux. 1. Installation de VLC et FFMPEG Très simple grâce au gestionnaire de paquets apt-­‐get ! > sudo apt-get update
> sudo apt-get install vlc
> sudo apt-get install ffmpeg
Lancez VLC et précisez l’adresse et le port du serveur rtsp : Préférences / Stream / VOD. Entrez l’adresse IP de la machine (cf. ifconfig) suivi de :5554. 2. Configuration du firewall Le firewall IPTABLES est inclus dans le noyau sur les dernières distributions Linux, ce qui signifie qu’il ne peux pas être désactivé (à moins de recompiler le noyau…). Il faut donc configurer le firewall pour autoriser la sortie de paquets UDP via un port donné, disons 5554. > iptables -A OUTPUT -p udp --dport 5554 -j ACCEPT
1&2. Installation et configuration Pour ce TP, FFMPEG et VLC sont installés avec les principaux codecs. Il semblerait, en revanche, que le décodeur AAC et l’encodeur MP4V de VLC ne fonctionnent pas bien. FFMPEG, tel qu’il est installé, supporte un grand nombre de décodeurs/encodeurs. Pour connaître la liste des codecs supportés, tapez ffmpeg -formats. VLC permet l’encodage vidéo H264 ainsi que l’encodage audio AAC. La liste des codecs supportés par VLC est disponible à l’URL http://wiki.videolan.org/Codec. 3. Conversion de vidéo avec FFMPEG Nous allons d’abord considérer des fichiers vidéo à diffuser. Il faut préalablement les convertir afin de rendre possible le visionnage de ces vidéos par le plus grand nombre d’utilisateur (quelque soit leur bande passante). Malheureusement, il existe encore très peu de serveurs qui proposent du « streaming intelligent ». Adobe et Windows implémentent des variantes mais ces solutions sont payantes et propriétaires. Par conséquent, nous viserons plutôt la diffusion d’une même vidéo à plusieurs qualités d’encodage. a. Téléchargez la vidéo à l’adresse http://stephane.ayache.perso.esil.univmed.fr/Cours/MMAv/video.avi b. Ouvrez la vidéo avec VLC > vlc video.avi
c. Pas de son ? Regardons ce qu’il se passe avec ffmpeg > ffmpeg –i video.avi
Que constatez-­‐vous ? Utilisez FFMPEG pour convertir la vidéo en mpeg4, à différent taux d’encodage. 4. Conversion avec VLC Faites de même avec VLC… Vous constaterez que la syntaxe est très différente et les résultats aussi. Généralement, il vaut mieux utiliser FFMPEG pour convertir des fichiers audio ou vidéo. Il est absolument nécessaire de connaître la syntaxe de conversion de VLC car elle permet de convertir les flux audio/vidéo à la volée lors de la diffusion de fichiers multimédia. Dans la mesure où la version de VLC installée comporte les problèmes mentionnés ci-­‐
dessus, vous vous aiderez de FFMPEG pour parvenir à un encodage MP4 satisfaisant via VLC. 5. Activation du serveur de streaming VLC Nous allons activer et contrôler le serveur de streaming de VLC. Cela se fait en ligne de commande, via l’interface Telnet de VLC. Le module qui permet cela était anciennement appelé VLM (VideoLAN Manager), il est à présent mieux intégré à VLC mais nous trouverons toutefois des informations sur Internet en recherchant des pages relatives à « VLM ». a. Activation du serveur (en ligne de commande) > vlc -I telnet --rtsp-host ADRESSE.IP:5554 -d
b. Connexion au serveur > telnet localhost 4212
(par défaut, le mot de passe est ‘admin’) 6. Diffusion multimédia en broadcast Depuis le shell Telnet, nous allons à présent définir des scripts de diffusion. Ces scripts suivent toujours un schéma similaire : >
>
>
>
new ID broadcast enabled
setup ID input VIDEO (locale, distante, ou en acquisition)
setup ID ouptut TRANSCODAGE ET DESTINATION
control ID play
Pour avoir la liste des autres commandes ou options, tapez ‘help’ ! a. Diffusion UNICAST Considérez la vidéo « video.mp4 » obtenue précédemment et diffusez la vers votre machine ( !), sur le port UDP 1234. Récupérez le flux avec VLC. > vlc udp://:1234
Diffusez la vidéo vers votre voisin, sur le port 1235. b. Diffusion BROADCAST Diffusez la vidéo vers tout le sous-­‐réseau, sur le port 1236. c. Transcodage et diffusion Considérez la vidéo « video.avi » de départ et définissez un script pour diffuser son contenu sur votre machine. d. Diffusion MULTICAST Choisissez une adresse Multicast sur la plage 239.255.0.0 -­‐-­‐ 239.255.255.255 et diffusez votre vidéo, sur le port 1237. Les clients qui souhaitent lire le flux devront « joindre » le groupe correspondant en se connectant à l’adresse multicast. > vlc udp://@ADRESSE.MULTICAST:1237
7. Diffusion multimédia en VOD Les scripts de diffusion en « Video On Demand » sont légèrement différents : >
>
>
>
new ID vod
setup ID input VIDEO (locale, distante, ou en acquisition)
setup ID ouptut TRANSCODAGE
setup ID enabled
Pour lire un flux VOD, un client doit se connecter sur l’adresse du serveur, via le protocole RTSP, et préciser le nom (ID) de la vidéo souhaitée. > vlc rtsp://ADRESSE.IP:5554/ID
a. Diffusion VOD Considérez la vidéo « video.mp4 » obtenue précédemment et mettez la en VOD avec pour identifiant « Barbamama ». Essayez de lire le flux depuis plusieurs machines de la salle. b. Diffusion multiple Définissez trois scripts de diffusion VOD pour rendre accessible votre vidéo selon différents taux d’encodage. Par exemple, vous pourrez mettre à disposition les trois flux « Barbamama_low », « Barbamama » et « Barbamama_high ». 8. Acquisition et diffusion Les exercices précédents ont introduit différentes façons de diffuser une vidéo existante sur un réseau. Nous allons à présent considérer la diffusion de flux audio ou vidéo obtenus en acquisition. Avec VLC, les périphériques d’acquisition peuvent être de différentes natures : carte TV, caméra ou micro, ce qui offre de nombreuses possibilités d’applications ! Pour ce TP, nous n’avons qu’une webcam disponible pour toute la salle, c’est un peu dommage … mais elle a l’avantage d’être mobile. Elle circulera donc dans la salle entre les différents binômes. Définissez un script VOD ou MULTICAST pour la diffusion de la vidéo obtenue par la webcam. Vous utiliserez pour ceci le pilote d’acquisition V4L (Video For Linux) installé sur les machines.