Le problème

Pour faire simple :

  • un ordinateur demande un flux TV à la freebox
  • ce flux est envoyé par la freebox et son IP "freeplayer" vers le premier équipement de la chaîne
  • si cet équipement est un routeur alors l'ordinateur demandeur ne reçoit pas les flux

Il faut faire du Destination NAT sur le routeur/firewall en forwardant les flux UDP de la freebox (212.27.38.253) vers le bon ordinateur.
Malheureusement, le lecteur vidéo va demander un port UDP au hasard à la freebox, ce qui bloque l'utilisation de la TV sur plusieurs ordinateurs du réseau. En effet, il est impossible de forwarder sur deux IP différentes deux flux TV distincts avec cette configuration du routeur/firewall. Il faut obligatoirement distinguer les deux ordinateurs dans le NAT.

Solutions

Pour régler ce problème, il faut modifier VLC (le player vidéo utilisé) pour qu'il choisisse toujours le même port UDP. La configuration du routeur/firewall n'en sera que plus simple.
Vu sur les forums de freenews.fr :

La version de VLC utilisée est la 0.8.5-svn.
Il faut modifier le fichier livedotcom.c avec le petit patch suivant :

--- livedotcom.cpp.orig 2005-12-25 01:41:45.973273600 +0100
+++ livedotcom.cpp      2005-12-24 23:38:23.709340800 +0100
@@ -353,6 +353,8 @@
        else
             continue;

+sub->setClientPortNum(44444);
+
        if( !strcmp( sub->codecName(), "X-ASF-PF" ) )
            bInit = sub->initiate( 4 ); /* Constant ? */
        else

Le port demandé est le 44444/UDP (penser à reconfigurer le firewall).

De la même manière, pour un deuxième VLC sur un autre ordinateur, j'ai spécifié le port 33333/UDP.

Compilation

Après avoir patché le fichier, passons à la compilation. J'ai compilé manuellement VLC sans faire de paquet ubuntu pour une fois. La ligne de commande suivante correspond à mon PC, donc à adapter selon l'architecture. Ne pas oublier les dépendances (-dev) associées aux codecs/fonctions demandées.
Pour information, j'ai ffmpeg de compilé dans un répertoire que je spécifie au script 'configure'.

[Bidoche /usr/src/videolan/vlc-0.8.5-svn ]$ ./configure \
--enable-ffmpeg --with-ffmpeg-tree=../ffmpeg --with-ffmpeg-mp3lame \
--with-ffmpeg-config-path=../ffmpeg/ffmpeg --enable-faad --enable-theora \
--enable-flac --enable-esd --enable-dvbpsi --enable-dvdread --enable-wxwidgets \
--enable-libmpeg2 --enable-vorbis --enable-sout --enable-http --enable-dvdnav \
--enable-libcdio --enable-alsa --enable-visual --enable-libcddb --enable-cdda \
--enable-vcd --enable-screen --enable-ogg --enable-mkv --enable-mod --enable-mad \
--enable-png --enable-cmml --enable-x11 --enable-xvideo --enable-glx --enable-sdl \
--enable-freetype --enable-libxml2 --enable-oss --enable-dvb --enable-loader \
--enable-release --enable-v4l --enable-pvr --with-tuning=athlon-xp --enable-realrtsp \
--enable-livedotcom --prefix=/usr --enable-daap

...

vlc configuration

vlc version           : 0.8.5-svn
system                : linux
architecture          : i686 mmx
build flavour         : optim release
vlc aliases           : svlc wxvlc

You can tune the compiler flags in vlc-config.
To build vlc and its plugins, type `./compile' or `make'.

[Bidoche /usr/src/videolan/vlc-0.8.5-svn ]$ make && make install

VLC est donc recompilé, installé à la place du VLC ubuntu et fonctionne avec la freebox avec le port UDP précisé.

De la même manière, pour OS X 10.4, j'ai recompilé VLC avec le port 33333/UDP afin que l'ibook puisse lui aussi afficher les flux TV de la freebox. La compilation est très longue mais fonctionne sans problème.

Binaires

  • Je peux envoyer sur demande la version OS X 10.4 de VLC avec le port UDP 33333.
  • Pour la version Linux Ubuntu (AthlonXP) de VLC avec le port UDP 44444 il va falloir attendre que je trouve le moyen de faire un package binaire des sources compilées.... ce n'est pas gagné :'(

Liens

Free : freebox multiposte
VLC : compiler VLC