Serveur MediaTomb : configuration

Logo DLNA

Bienvenue dans la suite de mon guide pour installer un serveur UPnP simplement chez soi grâce à MediaTomb. Je le rappelle, ce serveur multimédia me permettra de diffuser de la musique, des films ou encore des photos en streaming, sur le réseau local de ma maison. Le but étant principalement pour moi de jouir d’un espace de stockage redondé (mon serveur) pour y mettre toutes mes séries et mes films et de pouvoir en profiter sur ma télé, qui dispose d’un client UPnP.

Après avoir compilé MediaTomb avec la prise en charge du javascript, nous allons nous intéresser au fichier de configuration, qui est tout seul, et qui est situé /etc/mediatomb/config.xml. Et oui, c’est du XML donc ça va être relativement simple à configurer ! Une fois prêts, nous nous intéresserons davantage aux scripts qui gèreront le tri de nos fichiers mais ça, c’est pour un prochain tutoriel.

Encore mieux et plus rapide

Avant de mettre les mains dans le cambouis, je vous propose de faire une sauvegarde du fichier de configuration et d’arrêter le service mediatomb. On n’est jamais trop prudent.

cp /etc/mediatomb/config.xml /etc/mediatomb/config.xml.bak
service mediatomb stop

Le fichier de configuration de MediaTomb est divisé en trois grandes sections :

  <server>
   <!-- Les paramètres du serveur sont ici -->
</server>
<import>
   <!-- Les paramètres d'importation sont ici -->
</import>
<transcoding>
   <!-- Les paramètres d'encodage sont ici -->
</transcoding>

Comme vous le voyez cela reste relativement simple…

Première section : configuration du serveur

La première section concerne donc la configuration du serveur et va permettre de paramétrer le comportement d’UPnP, le système de gestion de bases de données et la base de données à utiliser, les comptes utilisateurs et l’activation ou non de l’interface web de MediaTomb.

Pour alléger mon article, je vous propose des explications directement dans les commentaires du fichier. Voici donc mon fichier de configuration :

<server>
    <!-- Paramétrage de l'interface web -->
    <ui enabled="yes" show-tooltips="yes">
      <accounts enabled="yes" session-timeout="1800">
        <account user="Guillaume" password="XXXXXXXX"/>
      </accounts>
    </ui>
 
    <!-- Caractéristiques du serveur -->
    <name>Home - Multimédia</name>
    <udn>uuid:cf61b23b-6878-4ac0-a59c-36e62e33740c</udn>
 
    <!-- Dossiers /home et racine de l'interface web -->
    <home>/home/mediatomb/</home>
    <webroot>/usr/share/mediatomb/web</webroot>
 
    <!-- Gestion des bases de données -->
    <storage caching="yes">
      <sqlite enabled="no"></sqlite>
      <mysql enabled="yes">
        <username>mediatomb</username>
        <password>XXXXXXXX</password>
      </mysql>
    </storage>
 
    <!-- Options d'exécution -->
    <extended-runtime-options>
      <!-- Libraire de gestion des vignette. Fonction non prise en charge par tous les clients UPnP -->
      <ffmpegthumbnailer enabled="no">
        <thumbnail-size>128</thumbnail-size>
        <seek-percentage>5</seek-percentage>
        <filmstrip-overlay>yes</filmstrip-overlay>
        <workaround-bugs>no</workaround-bugs>
      </ffmpegthumbnailer>
       <!-- Permet de marquer les éléments déjà vu. Particulièrement utile pour suivre une série -->
       <mark-played-items enabled="yes" suppress-cds-updates="yes">
        <string mode="prepend">(Vu) </string>
        <mark>
                <content>video</content>
        </mark>
      </mark-played-items>
    </extended-runtime-options>
  </server>

Conseils à propos de cette section :

  • Comme indiqué sur la documentation de MediaTomb, n’activez l’interface web que si vous utilisez votre serveur en local car l’accès à cette interface est visiblement peu sécurisée, même s’il y a un mot de passe. Cette interface donne accès à beaucoup trop de choses pour pouvoir être utilisée à la légère.
  • MediaTomb peut fonctionner avec une base MySQL. Pensez à créer la base de données avant de relancer le serveur car vous risquez d’avoir un souci… Pensez aussi à créer un utilisateur MySQL qui n’a de droits que sur la base de données réservée à MediaTomb.
  • Un souci est apparu après avoir configuré MySQL. En effet au démarrage su serveur, MediaTomb était lancé avant MySQL. Impossible donc pour le daemon de démarrer correctement. Le message suivant apparaissait dans les logs :
    The connection to the MySQL database has failed: mysql_error (2002): "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

    Après quelques recherches, j’ai trouvé la solution sur un thread de ubuntuforums.org où HectorG propose une solution toute simple, modifier le fichier /etc/init/mediatomb.conf et remplacer la ligne :

    start on (local-filesystems and net-device-up IFACE!=l0)

    par :

    start on (started mysql and local-filesystems and net-device-up IFACE!=l0)

    Ainsi MediaTomb démarrera après MySQL sans problème.

  • La section « Options d’exécution » permet d’ajouter des options sur les médias. ATTENTION, ces options ne seront valables que sur les médias qui n’ont pas encore été importés. Si vous changez une de ces options et que vous souhaitez l’appliquer à vos médias déjà importés, il faudra tout ré-importer… Personnellement je n’ai pas activé ces fonctionnalité et je les ai supprimées du fichier de conf car optionnelles.

Deuxième section : réglages d’importation

Vous vous en doutez, nous allons voir ici comme MediaTomb doit regrouper nos contenus.

 <!-- On importe pas les fichier cachés -->
 <import hidden-files="no">
 
    <!-- Emplacement des scripts javascript -->
    <scripting script-charset="UTF-8">
      <!-- common.js regroupe des fonction utilisables dans vos scripts de tri -->
      <common-script>/usr/share/mediatomb/js/common.js</common-script>
      <!-- Ce script parse vos playlists -->
      <playlist-script>/usr/share/mediatomb/js/playlists.js</playlist-script>
      <!-- Le script suivant gère l'importation des données et la façon dont elles sont classées -->
      <virtual-layout type="builtin">
        <import-script>/usr/share/mediatomb/js/import.js</import-script>
      </virtual-layout>
    </scripting>
 
    <!-- C'est ici que sont associés tous les MIMETYPES / Extensions. Les réglages par défaut fonctionnent, pas besoin de toucher -->
    <mappings>
      <extension-mimetype ignore-unknown="no">
        <map from="mp3" to="audio/mpeg"/>
        <map from="ogg" to="application/ogg"/>
        <map from="asf" to="video/x-ms-asf"/>
        <map from="asx" to="video/x-ms-asf"/>
        <map from="wma" to="audio/x-ms-wma"/>
        <map from="wax" to="audio/x-ms-wax"/>
        <map from="wmv" to="video/x-ms-wmv"/>
        <map from="wvx" to="video/x-ms-wvx"/>
        <map from="wm" to="video/x-ms-wm"/>
        <map from="wmx" to="video/x-ms-wmx"/>
        <map from="m3u" to="audio/x-mpegurl"/>
        <map from="pls" to="audio/x-scpls"/>
        <map from="flv" to="video/x-flv"/>
        <map from="mkv" to="video/x-matroska"/>
        <map from="mka" to="audio/x-matroska"/>
      </extension-mimetype>
      <mimetype-upnpclass>
        <map from="audio/*" to="object.item.audioItem.musicTrack"/>
        <map from="video/*" to="object.item.videoItem"/>
        <map from="image/*" to="object.item.imageItem"/>
        <map from="application/ogg" to="object.item.audioItem.musicTrack"/>
      </mimetype-upnpclass>
      <mimetype-contenttype>
        <treat mimetype="audio/mpeg" as="mp3"/>
        <treat mimetype="application/ogg" as="ogg"/>
        <treat mimetype="audio/x-flac" as="flac"/>
        <treat mimetype="image/jpeg" as="jpg"/>
        <treat mimetype="audio/x-mpegurl" as="playlist"/>
        <treat mimetype="audio/x-scpls" as="playlist"/>
        <treat mimetype="audio/x-wav" as="pcm"/>
        <treat mimetype="audio/L16" as="pcm"/>
        <treat mimetype="video/x-msvideo" as="avi"/>
        <treat mimetype="video/mp4" as="mp4"/>
        <treat mimetype="audio/mp4" as="mp4"/>
        <treat mimetype="application/x-iso9660" as="dvd"/>
        <treat mimetype="application/x-iso9660-image" as="dvd"/>
        <treat mimetype="video/x-matroska" as="mkv"/>
        <treat mimetype="audio/x-matroska" as="mka"/>
      </mimetype-contenttype>
</mappings>
 
    <!-- Contenu en ligne. Mediatomb vous permet de lire de vidéos issues de YouTube ou d'autres services en ligne. Personnellement je ne l'utilise pas. -->
    <online-content><!-- Make sure to setup a transcoding profile for flv -->
      <YouTube enabled="no" refresh="28800" update-at-start="no" purge-after="604800" racy-content="exclude" format="flv" hd="no">
        <favorites user="mediatomb"/>
        <standardfeed feed="most_viewed" time-range="today"/>
        <playlists user="mediatomb"/>
        <uploads user="mediatomb"/>
        <standardfeed feed="recently_featured" time-range="today"/>
      </YouTube>
    </online-content>
  </import>

Conseils sur cette section :

  • Personnellement je n’ai pas eu à toucher à cette section étant donné qu’elle fonctionnait dès le départ. Nous y reviendront sans doute dans le prochain tutoriel lorsque nous préparerons nos scripts.

Troisième section : le transcodage

Oui, MediaTomb vous permet de transcoder vos contenus à la volée notamment grâce au transcodeur vlcmpeg. Cette option est particulièrement utile si l’un de vos client ne prend pas en charge un des formats de vidéo proposés par votre serveur. C’est le cas par exemple avec la PS3 qui ne sait pas lire les fichier .mkv… Comme je n’ai pas de PS3 et que je n’utilise pas la fonction de transcodage de MediaTomb, je vous renvoie vers ce tutoriel qui m’a l’air clair et bien construit.

Conclusion

Comme vous le voyez j’ai surtout fait du ménage dans le fichier de configuration en supprimant les sections qui ne me servaient pas. Néanmoins, MediaTomb dispose d’une impressionnante quantité d’options, que vous pouvez retrouver sur la documentation officielle. C’est en anglais, mais c’est vraiment clair et bien fait. N’hésitez pas à aller y faire un tour si vous avez des questions, ou utilisez les commentaires de ce billet.

On se retrouve très prochainement pour mettre au point les fichiers javascript qui se chargeront d’importer proprement nos contenus.

Cet article vous a plu ? Partagez-le sur les réseaux sociaux !

Twitter Facebook Google Plus email