Rapport de Projet Avancé : Encadré par : T. Ahmed
Transcription
Rapport de Projet Avancé : Encadré par : T. Ahmed
Hicham Lahbil Julien Montenoise Jalal Oubaih Matthieu Roussel Rapport de Projet Avancé : Encadré par : T. Ahmed Table des matières 1 2 3 4 5 6 Présentation du projet et cahier des charges _______________________________________ 3 1.1 Cahier des charges _______________________________________________________ 3 1.2 Qualité de Service _______________________________________________________ 3 1.2.1 Perte d’information __________________________________________________ 3 1.2.2 Principe de la FEC ___________________________________________________ 4 1.3 Ressources _____________________________________________________________ 5 1.4 Serveur de streaming _____________________________________________________ 5 1.4.1 Streaming __________________________________________________________ 5 1.4.2 Principe ___________________________________________________________ 5 1.4.3 Choix du serveur ____________________________________________________ 5 1.4.4 Adaptation du wifi ___________________________________________________ 6 Présentation du matériel_______________________________________________________ 6 2.1 Linksys: WRT54GS______________________________________________________ 6 2.1.1 Présentation ________________________________________________________ 6 2.1.2 Architecture ________________________________________________________ 8 2.1.3 Configuration _______________________________________________________ 9 2.2 ASUS : WL-500 G______________________________________________________ 11 2.2.1 Présentation _______________________________________________________ 11 Le firmware _______________________________________________________________ 13 3.1 Les firmwares existants __________________________________________________ 13 3.1.1 DD-WRT _________________________________________________________ 13 3.1.2 OpenWRT ________________________________________________________ 13 3.2 Création de notre propre firmware__________________________________________ 14 3.2.1 La compilation croisée _______________________________________________ 14 3.2.2 Utilisation du SDK__________________________________________________ 14 Réalisation ________________________________________________________________ 16 4.1 Installation du firmware __________________________________________________ 16 4.1.1 Supprimer le firmware original ________________________________________ 16 4.1.2 Installer Open-WRT_________________________________________________ 16 4.1.3 Mise à jour du firmware______________________________________________ 17 4.2 Connexion au routeur____________________________________________________ 17 4.2.1 SSH _____________________________________________________________ 17 4.2.2 Telnet ____________________________________________________________ 17 4.2.3 HTTP ____________________________________________________________ 17 4.3 Support de NFS ________________________________________________________ 17 4.3.1 Installation ________________________________________________________ 18 4.3.2 Utilisation_________________________________________________________ 18 4.4 Compilation croisée de VLC ______________________________________________ 18 4.4.1 Configuration de l’outil ______________________________________________ 18 4.4.2 Compilation croisée des bibliothèques nécessaires _________________________ 19 4.4.3 Compilation croisée de VLC avec les bonnes options_______________________ 19 4.5 Montage de l’applicatif par NFS ___________________________________________ 20 4.5.1 Sur l’hôte _________________________________________________________ 20 4.5.2 Sur le routeur ______________________________________________________ 21 4.6 Démarrage du serveur VLC _______________________________________________ 21 Conclusion : _______________________________________________________________ 22 Bibliographie ______________________________________________________________ 23 2 1 Présentation du projet et cahier des charges Le but du projet est d’intégrer un serveur d’adaptation de streaming sur une borne WiFi. (Version modifiée du serveur open source VideoLAN qui nous a été fournie). Le serveur permet d’adapter les flux audiovisuels en fonction des paramètres de qualité de service du réseau Wifi. 1.1 Cahier des charges La borne WiFi choisie est de type Linksys WRT54GS à architecture MIPS32 qui tourne sur le système Linux OpenWRT mais d’autres bornes WiFi plus performantes peuvent aussi être utilisées en l’occurrence l’ASUS WL500g. L’architecture générale de la plateforme est illustrée dans la figure suivante. Elle comprend un serveur de streaming audiovisuel fonctionnant comme source multimédia. Une borne WiFi qui offre un point d’accès au réseau et plusieurs clients hétérogènes. Le flux VoD (Video on Demand) demandé par chaque client est adapté au niveau de la borne WiFi. Client 1 Borne WiFi + Serveur d'adaptation Serveur de streaming Client 2 Figure 1 : Serveur de streaming avec adpation 1.2 Qualité de Service 1.2.1 Perte d’information Les pertes de paquets qui sont observées lors du streaming par wifi peuvent dramatiquement réduire la qualité perçue par les utilisateurs d’application de streaming sur wifi. La protection fondée sur la compensation des pertes à la réception (FEC) permettent de réduire l’impact des pertes sur la qualité de la vidéo. 3 1.2.2 Principe de la FEC Le schéma suivant explique simplement le principe de la FEC : Figure 2 : principe de la FEC La FEC consiste donc à ajouter un nombre de paquets redondants (selon le pourcentage de perte). De cette façon, on peut reconstruire une donnée perdue lors de la transmission en utilisant les paquets redondants. 9 Exemple : XOR Figure 3 : exemple d'utilisation de la FEC 4 1.3 Ressources Dans ce projet les ressources suivantes ont été utilisées : ¾ deux routeurs : Linksys WRT54GS et Asus WL500G, ¾ la distribution linux openwrt ¾ une version modifiée de VLC (supportant la FEC). 1.4 Serveur de streaming 1.4.1 Streaming Le streaming consiste à transmettre des flux audio et vidéo sur le Web. Grâce au streaming on peut : ¾ proposer de la vidéo à la demande (VoD : Video On Demand). ¾ diffuser en live (ex : une chaîne de télévision diffuse en permanence ses programmes sur Internet). Le flux vidéo est donc encodé directement et transmis sur Internet. 1.4.2 Principe Le serveur envoie le fichier vidéo ou audio par paquets de données qui seront traitées au fur et à mesure de leurs arrivées. En raison 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 mémoire 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 réception possède assez d'informations, la lecture du flux commence et les images et le son sont retransmis. 1.4.3 Choix du serveur Le serveur de streaming est VLC Player. Il a plusieurs avantages : ¾ simple d’utilisation, ¾ lecture de nombreux formats vidéo et audio, ¾ fiable. Mais ce qui nous intéresse le plus c’est qu’elle est supportée par LINUX Openwrt et qu’il est libre ce qui implique une large possibilité d’adaptation du code source. 5 1.4.4 Adaptation du wifi Lors du streaming le client envoie des rapports de qualités RTCP. Le serveur analyse ces rapports et adapte son débit en fonction de la qualité souhaitée. Figure 4 : adaptation du streaming 2 Présentation du matériel 2.1 Linksys: WRT54GS Pour porter l’application VLC dans un routeur Wifi, nous nous sommes intéressés dans un premier temps à un routeur assez répandu et ayant une bonne réputation : le WRT54GS de Linksys. 2.1.1 Présentation Figure 5 : Le WRT54GS de Linksys 6 Le WRT54GS a connu plusieurs révisions matérielles, principalement pour des raisons d’intégration des divers composants. La révision que nous avons utilisée, comprend : ¾ 16Mo de mémoire RAM, ¾ 8Mo de mémoire Flash, ¾ Un processeur Broadcom BCM4712 de la famille MIPS cadencé à 200MHz, ¾ Un port Ethernet WAN pour connecter un réseau externe, en général un modem Ethernet pour accéder à l’internet, ¾ 4 Ports Ethernet pour la connexion LAN, ¾ Un chipset Wifi, ¾ Deux antennes Wifi fournies, mais il est possible de les changer pour mettre des antennes plus adaptées en fonction des besoins. Figure 6 : Carte électronique du routeur WRT54GS 7 2.1.2 Architecture On peut résumer l’architecture du WRT54GS par le schéma suivant : Figure 7 : Interfaces réseaux On retrouve donc : ¾ 3 interfaces avec le monde extérieur : Une interface pour le réseau local (LAN), Une interface pour le réseau externe (WAN). Dans la pratique, c’est là que l’on branche son modem internet, Une interface Wifi. ¾ 4 interfaces internes : Vlan1 : c’est l’interface qui gère le WAN, Vlan0 : c’est l’interface qui gère le LAN, Eth1 : c’est l’interface qui gère le Wifi, Eth0 : c’est une interface interne qui gère les échanges entre le WAN et le pont LAN/Wifi (Br0), Br0 : c’est un pont qui gère le LAN et le Wifi. 2.1.3 Configuration Le WRT54GS se configure à l’aide d’une interface WEB classique, qui est disponible via n’importe quel navigateur Internet (via l’adresse 192.168.1.1 par défaut) : Figure 8 : L’interface WEB du WRT54GS Voici les différentes options de l’interface que l’on peut modifier : 9 Internet La connexion à l’internet peut se faire de différentes façons : DHCP : le réseau donne une adresse IP au routeur Static IP : Il est possible d’imposer une IP fixe 9 Connexion au réseau local (LAN) Nous pouvons spécifier l’adresse IP du routeur dans le réseau local (192.168.1.1 par défaut), le masque de sous-réseau, une passerelle et éventuellement l’adresse d’un serveur DNS local. Il est aussi possible d’activer un serveur DHCP au niveau du routeur. 9 Sans fil : WIFI Paramètres de base Il est possible de spécifier si le routeur doit gérer des clients en 802.11b, en 802.11g ou les 2 (sachant que dans ce cas le débit Wifi s’ajustera sur le client le plus lent connecté au routeur). On peut aussi spécifier le nom de l’interface Wifi (SSID) et le canal radio à utiliser. Il est aussi possible de ne pas diffuser le SSID à des fins de sécurité. Filtrage MAC Il est possible d’autoriser ou d’interdire la connexion des clients Wifi à partir de leur adresse MAC (adresse unique et invariable donnée à toute carte réseau). 10 2.2 ASUS : WL-500 G Le WRT54GS est un bon routeur à usage grand public, avec des fonctionnalités complètes et une stabilité à toute épreuve, mais il contient un grand handicap pour notre projet : les applications sur lesquelles nous avons travaillé (VLC, fichiers vidéo), prennent beaucoup de place dans la mémoire. Pour cela, nous avons utilisé un autre routeur très semblable au WRT54GS, mais qui est plus puissant et qui contient une capacité de mémoire supérieure pour nos applications. Notre choix s’est porté sur le routeur ASUS WL-500 G. 2.2.1 Présentation Figure 9 : ASUS WL-500 G Ce routeur comprend : ¾ 32Mo de mémoire RAM, ¾ 8Mo de mémoire Flash, ¾ Un processeur Broadcom BCM4704 de la famille MIPS à une fréquence de 266MHz , ¾ Un port Ethernet WAN pour la connexion un réseau externe, ¾ 4 Ports Ethernet pour la connexion LAN, ¾ 2 Ports USB 2.0, ¾ Un chipset Wifi sur le slot mini-PCI, ¾ 1 antenne pour la connexion Wifi. Figure 10 : Carte eletronique de l'Asus Les avantages du routeur Asus sont : ¾ la fréquence du processeur est de 266MHz (200MHz pour WR54GS), ¾ la capacité de mémoire : 32Mo de mémoire RAM (16Mo de RAM pour WR54GS. On gagne le double de place), ¾ les 2 Ports USB 2.0 (sur le WRT54GS, il n’y a pas de port USB). 12 3 Le firmware 3.1 Les firmwares existants Avec la commercialisation de leurs routeurs Wifi respectifs basés sur le chip Broadcom BCM47xx, les entreprises Linksys et Asus ont chacune fourni un firmware basé sur un noyau Linux. Du fait de la licence GPL, elles ont dû -par la même occasion- mettre à disposition les sources des logiciels libres qu'elles avaient utilisés et modifiés. De cette façon, de nombreux développeurs ont pu créer leurs propres firmwares pour pallier éventuellement aux manques des firmwares officiels en modifiant l'ergonomie de l'interface web ou encore en ajoutant des nouvelles fonctionnalités, de nouveaux logiciels... Parmi tous les firmwares présents sur internet, deux sortent du lot avec des objectifs différents : DD-WRT et openWRT. 3.1.1 DD-WRT DD-WRT est le firmware que nous avons utilisé en premier. Ce firmware est décliné en 4 versions possédant plus ou moins de fonctionnalités. Pour laisser le plus de mémoire disponible pour l’application VLC, nous avons utilisé la version « micro » du firmware. L'interface web de DD-WRT est très fournie et permet de nombreuses paramétrisations du système. De ce fait, certains utilisateurs n'hésitent à prétendre que ce firmware permet de transformer un router grand public, en un véritable routeur WiFi professionnel. Par ailleurs, la communauté autour de ce firmware est assez active comme en témoigne le site officiel, les forums disponibles dans plusieurs langues ou encore le wiki. 3.1.2 OpenWRT OpenWRT axe son développement sur la modularité en proposant une base minimaliste : ¾ un ensemble des commandes shell (ls, cp, rm...) regroupées dans Busybox, ¾ un serveur http : webif, ¾ un serveur ssh : dropbear, ¾ un firewall : iptables, ¾ un gestionnaire de packages : ipkg. Les applications ont été choisies car elles ont été développées spécialement dans l'optique de l'embarqué (peu nécessiteuse en mémoire) : Il est bien sûr hors de question d'utiliser apache comme serveur http par exemple. Grâce au gestionnaire de packages, l'utilisateur peut à se guise ajouter, supprimer ou même mettre à jour des packages. De plus, un kit de développement (SDK : Software Development Kit) a été mis à la disposition par les développeurs pour permettre à chacun de créer son propre firmware suivant ses besoins. C'est pour cette raison que nous avons utilisé ce firmware par la suite. 3.2 Création de notre propre firmware 3.2.1 La compilation croisée Dans le domaine de l'informatique, l'architecture utilisée pour développer un logiciel est généralement semblable à l'architecture destinée à exécuter ce même logiciel. Dans notre cas, nous allons utiliser une station de développement Linux x86 pour générer des programmes qui seront exécutés par un routeur basé sur un processeur MIPS, c'est ce qu'on appelle une compilation croisée. Grâce à l'essor du logiciel libre, Linux et les outils GNU associés ont été portés sur de nombreuses plateformes (x86, PPC, ARM, MIPS) et permettent de réaliser des compilations croisées. La chaîne de compilation GNU est basée sur 3 éléments : ¾ le compilateur qui constitue le package gcc, ¾ les outils annexe (assembleur, éditeur de liens, etc.) qui constituent le package binutils, ¾ la GNU-Libc dont on utilisera le package uclibc développé spécialement pour l'embarqué (au contraire du package utilisé habituellement : glibc). La chaîne de compilation croisée (ou toolchain en anglais) peut donc être installée manuellement à partir des packages cités précédemment mais ce procédé est bien souvent fastidieux. On peut citer des outils comme ELDK ou encore CROSSTOOL qui se charge de cette étape. Dans notre cas, nous récupérerons le toolchain du SDK. 3.2.2 Utilisation du SDK Le SDK est en fait un ensemble de scripts (Makefile, .sh, .pl) pour compiler un ensemble de package que l'utilisateur choisi. La configuration du firmware se fait en lançant la commande : >make menuconfig On obtient alors le même genre d'interface qui est utilisée pour compiler un noyau Linux. Différents choix sont disponibles comme les versions de gcc et binutils pour établir la toolchain, la version du noyau (2.4 ou 2.6), le système de fichiers, le contenu de busybox, etc. Une fois la configuration réalisée, il ne reste plus qu'à compiler : >make 14 La compilation permet d'obtenir 3 fichiers différents : ¾ Les programmes sont installés dans une arborescence propre, le système de fichier (root.fs) est ensuite créé avec l'utilitaire mksquashfs-lzma (dans le cas d'un système de fichier squashfs). Le système de fichier squashfs a été retenu car c'est avec lui que l'on obtient les plus petites empreintes de firmware grâce à la compression lzma. C'est par ailleurs un système de fichier en lecture seule : au premier boot, l'espace flash restant est converti en partition jffs2 pour pouvoir stocker des informations. ¾ Le noyau est compilé et compressé pour donner le fichier vmlinux.lzma. ¾ Le boot loader est créé : loader.tmp.gz. Une fois ces 3 étapes réalisées, on réunit les 3 dans un fichier trx. Exemple pour le routeur Asus : >trx -o openwrt.trx loader.tmp.gz vmlinux.lzma -a 0x10000 root.fs Enfin on convertit le .trx en .bin: >motorola-bin -2 openwrt.trx openwrt-wa840g-squashfs.bin Il ne reste plus qu'à charger notre firmware sur le routeur. 15 4 Réalisation 4.1 Installation du firmware Maintenant que tous les aspects du projet (objectifs, matériel et logiciel) ont été présentés, il est temps de regrouper ces différentes considérations et de procéder aux installations et configurations nécessaires au projet. La première étape est, bien entendu, l'installation du nouveau firmware fraîchement compilé sur le routeur. 4.1.1 Supprimer le firmware original Suivant les marques de routeurs, la suppression du firmware d'origine peut être une tâche plus ou moins complexe. Le cas peut-être le plus intéressant a été celui rencontré avec le routeur Linksys WRT54GS v5, où le traditionnel firmware basé sur Linux a été remplacé par un firmware propriétaire, VXWorks, pour des raisons économiques (VXWorks, nécessitant une empreinte mémoire plus faible, permet d'économiser de la FLASH). Il faut tout d'abord se rendre sur l'interface Web du firmware original. Dans la partie administrative, il est possible de mettre à jour le firmware. A la place, il faut charger successivement deux applications, vxworks_prep et vxworks_killer qui vont modifier le bootloader et supprimer Vxworks, afin de rendre possible l'installation d'Open-WRT. A la fin de cette opération, le routeur reboote automatiquement. 4.1.2 Installer Open-WRT L'installation proprement dite d'Open-WRT est réalisée par l'envoi du fichier .bin précédemment obtenu par le biais du protocole Trivial File Transfert Protocol (TFTP): >tftp -i 192.168.1.1 put dd-wrt.v23_micro_generic.bin En effet, au démarrage le routeur met en place un serveur TFTP (qui nécessite très peu de ressources); lorsque le transfert du fichier est terminé, le routeur redémarre tout seul et procède automatiquement à l'installation du système. 4.1.3 Mise à jour du firmware Les mises à jour du firmware Open-WRT sont ensuite plus aisées, puisqu'il suffit de l'envoyer à travers l'interface Web qu'il propose. Alors, un redémarrage du routeur mettra à jour automatiquement le système. 4.2 Connexion au routeur 4.2.1 SSH Le protocole SSH est installé par défaut par le firmware Open-WRT, donnant ainsi le moyen idéal pour avoir la main sur le routeur et le manipuler. Une fois connecté par SSH, l'administrateur a accès à toute la palette des scripts embarqués par BusyBox, versions souvent allégées des commandes traditionnelles du monde Linux. 4.2.2 Telnet Le protocole Telnet est également installé. Pour administrer le routeur, la connexion SSH est bien plus efficace et aisée; cependant Telnet est utilisé pour configurer les flux multimédia proposés par le serveur VLC, sur le port 4212. 4.2.3 HTTP De nombreux aspects de la configuration du routeur (configuration du LAN, du réseau sans fil, mise à jour du firmware, etc.) sont disponibles à travers le serveur Web embarqué sur Open-WRT. 4.3 Support de NFS Le support du Network File System (NFS) est crucial: en effet, les ressources pour le moins limitée du routeur ne permettent pas un stockage local des fichiers multimédia qui ont vocation à être servis par le serveur VLC. La mémoire FLASH du routeur n'est même pas en mesure de contenir l'applicatif VLC non compressé. Il faut donc recourir aux partitions NFS. Ce sont des dossiers résidant dans le système de fichiers d'un ordinateur connecté au réseau local et désignés sur ce poste comme étant « montables » par NFS. Le routeur peut ensuite monter ces partitions dans son propre système de fichiers; pour Open-WRT installé sur le routeur, ce dossier distant fait partie intégrante de son système de fichiers au même titre que /root ou /jffs. 17 4.3.1 Installation Pour installer le support NFS, il suffit d'installer le module prévu à cet effet par la distribution Open-WRT. >export http_proxy="http://proxy.enseirb.fr:3128" >ipkg update >ipkg install kmod-nfs >insmod sunrpc >insmod lockd >insmod nfs 4.3.2 Utilisation Afin de monter une partition distante, il faut d'abord expliciter dans le fichier /etc/exports de l'hôte que le dossier en question est à partager. La configuration indique également de quels droits disposera la machine utilisant ce dossier à distance (lecture seule, lecture écriture, ...) Sur le routeur, il faut alors entrer une ligne de commande du style: >mount -t nfs @IP:/partition /pointdemontage -o nolock Par exemple: >mount -t nfs 192.168.1.144:/home/nfs /tmp/nfs -o nolock 4.4 Compilation croisée de VLC 4.4.1 Configuration de l’outil La compilation croisée du serveur VLC met en jeu la toolchain déjà utilisée pour compiler le firmware. Il faut donc avant tout rajouter à la variable d'environnement PATH le chemin vers la toolchain d'Open-WRT. >export PATH=/root/Desktop/Linksys/OpenWrt-SDK-Linux-i686-1/ staging_dir_mipsel/bin:$PATH 18 4.4.2 Compilation croisée des bibliothèques nécessaires Deux librairies supplémentaires ont dû être compilées pour des raisons de dépendances (libiconv) et de fonctionnalités souhaitées (live). La première gère les différents jeux de caractères et est requise par VLC; la seconde apporte la possibilité d'utiliser comme source un flux vidéo provenant par exemple d'une webcam. Pour compiler libiconv, il faut taper: >./configure --host=mipsel-linux --prefix=/root/Desktop/Linksys/build/ --exec-prefix=/root/Desktop/Linksys/build/ >make && make install Pour compiler live, il faut modifier le fichier de configuration du code source à la main. Ansi, il faut rajouter dans le fichier config.linux le préfixe mipsel-linux- aux propriétés COMPILER et LIBRARY_LINK, afin que le bon compilateur soit utilisé et que l'on réalise effectivement une compilation croisée. Ensuite: >./genMakefiles linux >make clean && make Dernière modification préliminaire, il faut modifier le fichier modules/access_output/udp.c pour rentrer l'adresse IP du routeur sur lequel opérera le serveur VLC. Ceci est crucial pour le bon fonctionnement de la FEC, car cette adresse indique aux clients où renvoyer leurs rapports de qualité. 4.4.3 Compilation croisée de VLC avec les bonnes options Le serveur VLC doit être minimal, étant donné la plateforme extrêmement limitée que constitue le routeur. Son empreinte mémoire ainsi que l'utilisation du CPU doivent être les plus faibles possibles. C'est pourquoi lors que la configuration, toutes les options sont désactivées, excepté celles absolument nécessaires. On arrive par conséquent à la ligne de commande suivante: >./configure --enable-livedotcom --with-livedotcom-tree=/usr/local/src/vlc/liveMips32 -disable-cddax --disable-vcdx --disable-dvb --disable-faad --disable-twolame --disable-real -disable-realrtsp --disable-flac --disable-theora --disable-goom --disable-slp --disable-debug -disable-ffmpeg--disable-growl --disable-dvdnav --disable-smb --disable-dvbpsi --disablegnomevfs --disable-libcdio --disable-libcddb --disable-cdda --disable-vcd --disable-screen -disable-ogg --disable-mkv --disable-mod --disable-mpc --disable-mad --disable-a52 -disable-dts --disable-libmpeg2 --disable-vorbis --disable-speex --disable-png --disable-x264 --disable-cmml --disable-x11 --disable-xvideo --disable-glx --disable-xinerama --disablehd1000v --disable-alsa --disable-wxwidgets --disable-visual --disable-daap --disablegnutls --disable-skins2 --disable-sdl --host=mipsel-linux -prefix=/root/Desktop/Linksys/build/ --exec-prefix=/root/Desktop/Linksys/build/ --disablefribidi --disable-freetype --disable-bonjour --disable-hal --disable-ffmpeg --enable-dvbpsi -with-dvbpsi-tree=/root/Desktop/Linksys/libdvbpsi4-0.1.5 >make && make install L'applicatif VLC est désormais prêt à l'utilisation. Il suffit alors de le mettre à disposition du routeur. 4.5 Montage de l’applicatif par NFS 4.5.1 Sur l’hôte Il faut modifier le fichier /etc/exports de la machine qui héberge l'application VLC compilée pour le routeur ainsi que les fichiers multimédia à diffuser. Son contenu ressemblera à ceci: /root/Desktop/Linksys/build 192.168.1.1(rw) Cela indique que la machine d'adresse locale 192.168.1.1 (le routeur) pourra avoir accès dans son système de fichiers au dossier /home/nfs, avec les droits de lecture et d'écriture. Il faut ensuite redémarrer le serveur nfs afin que les changements soient pris en compte. >/etc/init.d/nfs restart 4.5.2 Sur le routeur Après s'être connecté par SSH, il suffit de créer par exemple un dossier /jffs/nfs et d'y monter le dossier distant. >mkdir -p /jffs/nfs >mount -t nfs 192.168.1.144:/root/Desktop/Linksys/build /jffs/nfs -o nolock 4.6 Démarrage du serveur VLC Pour démarrer le serveur VLC, il suffit de taper ces lignes de commande: >export LD_LIBRARY_PATH=/jffs/nfs:LD_LIBRARY_PATH >cd /jffs/nfs >./vlc -vvv -I telnet --rtsp-host 192.168.1.1 Ceci permet à vlc d’accéder aux bibliothèques, et le lance sur l’adresse 192.168.1.1 pour une configuration par telnet. Ainsi, il faut, à partir d’une autre machine, faire la configuration réelle du serveur. >telnet 192.168.1.1 4212 Une fois rentré dans l’interface de configuration, il est facile de rajouter une VOD: >new axis vod enabled setup axis input rtsp://172.17.0.100/mpeg4/media.amp Cette ligne diffuse en VOD le flux vidéo provenant d’une caméra. >new axis vod enabled setup axis input /jffs/nfs/robot1.avi Celle-ci utilise un fichier vidéo conventionnel. Dans ce cas, la vidéo est hébergée par la même machine que l’application VLC ; en réalité la vidéo est elle-même montée en NFS tout comme VLC, ce qui explique qu’il suffise d’aller la chercher à /jffs/nfs/robot1.avi 21 5 Conclusion : Lors de ce projet, l’installation du LINUX Openwrt a été réussie ainsi que l’intégration de la version modifiée du serveur de streaming (VLC). Des problèmes surgissent lorsque plusieurs clients demandent une vidéo. Ceci est vraisemblablement dû à la taille réduite de la RAM et à la faible puissance du processeur du routeur. Pour ces raisons, nous n’avons pas pu réaliser de tests comparatifs sur les apports de la version modifiée (FEC) de VLC. Ce projet a été très enrichissant pour notre formation car il touche à plusieurs domaines intéressants : compilation croisée, systèmes embarqués, réseaux, qualité de service et multimédias. 22 6 Bibliographie « Compilation croisée sous Linux et Windows » de Pierre Ficheux www.dd-wrt.com www.openwrt.org 23