La freebox est compatible depuis Mai 2009 avec le standard UPnp AV, c'est-à-dire qu'elle est capable de chercher les serveurs UPnP AV sur le réseau local et d'exploiter les fichiers partagés par les serveurs.
La page wikipedia sur l'UPnP et surtout le paragraphe sur l'UPnP AV explique mieux que moi les différentes parties impliquée.
Mediatomb est un serveur UPnP AV, il partage sur le réseaux les médias que l'utilisateur a sélectionnés.
Le seul problème c'est que seul les fichiers vidéos sont lisibles par la freebox, les fichiers audio n'apparaissent même pas dans l'interface. Cette limitation imposée par free utilise le mimetype des fichiers annoncé par le serveur UPnP/AV. En clair la freebox n'accepte que les mimetype suivants :
elle refuse tous les autres. Il suffit de donner le mimetype video/x-msvideo à n'importe quel fichier pour qu'il soit affiché dans l'interface. Mais il ne sera pas pour autant lu par la freebox…
Mediatomb est empaqueté dans Debian, donc pour l'installation :
Installation de mediatomb
sudo aptitude install mediatomb
La configuration de mediatomb est situé dans le fichier /etc/mediatomb/config.xml. Comme j'ai plusieurs interfaces réseaux, j'ai indiqué laquelle utilisée :
Configuration réseau dans /etc/mediatomb/config.xml
[...]
<server>
<interface>eth0</interface>
[...]
Pour que le démon démarre automatiquement au boot, il faut modifier le fichier /etc/default/mediatomb :
/etc/default/mediatomb
[...] NO_START="no" [...]
Après avoir démarré le service, une interface web est disponible à http://IP:49152/. Cette interface permet d'ajouter des médias ou des répertoires en utilisant l'ongler Filesystem. Une fois les médias ajoutés, ils sont disponibles dans l'onglet 'Database'.
Par défaut mediatomb range les médias en fonction de leur type (video, audio, image) et créé une arborescence virtuel pour certain media (répertoires album, artiste, date, … pour les fichiers audio).
À partir de maintenant les fichiers sont accessibles par la freebox.
La freebox est capable de lire les fichiers mp3, mais refuse de les lister et refuse un flux uniquement audio mp3. Pour preuve, il est possible de lire un fichier AVI ayant une bande son encodé en mp3.
La solution consiste à transcoder les mp3 en fichier vidéo. Sur le principe, on utilise n'importe quoi comme source vidéo, du moment que la source audio est le fichier mp3.
VLC est capable de lire 2 flux en même temps (audio + vidéo) et de les transcoder en un seul.
Script minimal pour transcoder mp3 + png
#!/bin/bash DIR="/home/path/to/music" FILE="myfile.mp3" COVER="cover.png" vlc \ --sout "#transcode{vcodec=mp2v,vb=400,scale=1,audio-sync}:duplicate{dst=display}" \ --sub-filter "marq{marquee=Artiste: \$a\$_Titre: \$t\$_Album: \$b\$_Piste: \$n,size=12}" \ --fake-duration=5000 --fake-width=300 --fake-height=300 --fake-fps=10 \ --fake-file "${DIR}/${COVER}" \ --input-slave "#fake://" \ "${DIR}/${FILE}"
Le logiciel djmount est capable d'exploiter les serveur UPnP/AV. Il utilise fuse pour créer une arborescence représentant le contenu du serveur UPnP.
Compilation de djmount
sudo aptitude install libfuse-dev wget http://sourceforge.net/project/downloading.php?group_id=142039&filename=djmount-0.71.tar.gz&a=15058957 tar xvzf djmount-0.71.tar.gz cd djmount ./configure make
Pour l'utiliser :
Utilisation de djmount
mkdir /tmp/upnp cd /path/to/install/djmount sudo ./djmount -f -o allow_other /tmp/upnp/
le -f force djmount à rester en foreground, c'est utile pour voir ce qui se passe.
Pour démonter l'arborescence :
Démonter
sudo fusermount -u /tmp/upnp/
Dans les répertoires virtuels il y a un répertoire nommé .metadata qui contient les fichiers xml décrivant chacun des fichiers, c'est très utile pour comprendre ce que communique le serveur UPnP.