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