Table des matières

MediaTomb : serveur multimédia

Introduction

MediaTomb est un serveur UPnP OpenSource sous Licence GNU GPL, permettant de distribuer des ressources audio et vidéo sur votre réseau interne, en étant géré par une interface web.

Installation

apt-get install mediatomb

Configuration

Fixer l'interface réseau

Il s'agit de préciser au daemon l'interface réseau à utiliser:

nano /etc/default/mediatomb
# Defaults for MediaTomb initscript
# sourced by /etc/init.d/mediatomb
# installed at /etc/default/mediatomb by the maintainer scripts
 
#
# This is a POSIX shell fragment
#
 
# Set whether the daemon should be started. Set this value to anything
# but 'yes' to enable the daemon
NO_START="no"
 
# Additional options that are passed to the daemon.
OPTIONS=""
 
# The network interface for MediaTomb to bind to and for which the multicast
# routing entry should be added; "" if the route shouldn't be added at all.
# For example: INTERFACE="eth0"
INTERFACE=""
 
# The route command and arguments to be used if INTERFACE is defined.
# These variables should normally be left unmodified.
ROUTE_ADD="/sbin/route add -net 239.0.0.0 netmask 255.0.0.0"
ROUTE_DEL="/sbin/route del -net 239.0.0.0 netmask 255.0.0.0"
 
# The user and group that MediaTomb should be run as.
USER="mediatomb"
GROUP="mediatomb" 
Dans mon cas, j'ai précisé:
INTERFACE="eth0"
La mention
NO_START="no"

permet à Mediatomb de se lancer au démarrage.

Réglage de l'interface web

nano /etc/mediatomb/config.xml
<?xml version="1.0" encoding="UTF-8"?>
 
<config version="1" xmlns="http://mediatomb.cc/config/1" xmlns:xsi="http://www.$
  <!--
     Read /usr/share/doc/mediatomb-common/README.gz section 6 for more
     information on creating and using config.xml configration files.
    -->
  <server>
    <ui enabled="no" show-tooltips="yes">
      <accounts enabled="no" session-timeout="30">
        <account user="mediatomb" password="mediatomb"/>
      </accounts>
      <name>MediaTomb</name>
    </ui>
    [......]

Rendre visible l'interface

Remplacer

<ui enable="no" 

par

<ui enable="yes" 

Mise en place d'un système d'authentification avec login et mot de passe

Remplacer

<accounts enable="no"

par

<accounts enable="yes" 

pour permettre d'activer le systeme d'authentification.

Changer ensuite les login/mot de passe dans

<account user="xxx"  password="xxx"/>

.

Relancer le serveur MediaTomb

service mediatomb restart

Gestion du partage des fichiers

Accès à l'interface web

Depuis un navigateur taper l'adresse :

 localhost:49152

ou bien

 adresse_ip_du_serveur:49152

Partage des fichiers multimédia

Pour indiquer au serveur où se trouvent les fichiers multimédia à partager:

  1. cliquez sur Filesystem
  2. sur l'arborescence obtenue cliquez sur le répertoire souhaité
  3. validez par le bouton + ce répertoire afin de l'ajouter dans la base de donnée

Revenir sur Database et vérifier dans PC Directory que votre dossier a bien été pris en compte.

La base de donnée générée se trouve par défaut ici :
/var/lib/mediatomb/mediatomb.db 

Pour la purger, supprimer le fichier, puis redémarrer mediatomb.

Gestion PS3

Pour que la PS3 puisse voir le serveur mediatomb, il faut modifier la ligne 23 ou 26, changez “no” par “yes”:

 protocolInfo extend="yes"

et la ligne 65 ou 77, enlevez les commentaires afin de n'avoir sur cette ligne que ce code:

 map from="avi" to="video/divx"

on peut aussi ajouter la ligne

 map from="m2ts" to="video/mpeg"

pour lire les fichiers HD M2TS avec la PS3.

Sous Debian

Vérifier la présence du paquet

python-coherence

Via Totem, le lecteur vidéo de gnome

Activer le greffon “client DLNA/UPnP Coherence, fourni par le paquet

totem-coherence

Via Rhythmbox, le lecteur de musique par défaut de Gnome

Activer le greffon du partage DLNA/UPnP, fourni par le paquet

rhythmbox-plugin-coherence

Connexion au serveur MediaTomb depuis un logiciel client

Via VLC

La fonctionnalité se trouve dans la section Local Network de la liste de lecture accessible par le raccourci clavier Ctrl+L

Avec un téléphone ou une tablette sous Androïd

UPnPlay et MX Video Player pour les vidéos.

Transcodage

Le transcodage comme son nom l’indique va permettre de transcoder la video en un format reconnu par le client:

Imaginons que comme moi votre tv est relié a votre PS3 qui servira de client pour accéder au pc “serveur”2) et vous permettra de lire vos media.
mais voila la PS3 a la facheuse tendance de ne pas lire certains formats de vidéo comme par exemple le format .mkv.
Mediatomb permet de transcoder à la volée vos contenus vidéo pour les rendre compatibles avec votre client3), grâce au transcodeur vlcmpeg et a des scripts que nous allons écrire.

D'abord commençons par activer le transcodage: pour cela on remplace “no” par “yes” a la ligne <transcoding enabled=“yes”> du fichier config.xml.
Nous indiquons maintenant ce qu'il faut transcoder4), on rajoute si ce n'est deja fait dans la section <mimetype-profile-mappings> les lignes suivantes:

<mimetype-profile-mappings>
  <transcode mimetype="video/x-flv" using="vlcmpeg"/>
  <transcode mimetype="application/ogg" using="vlcmpeg"/>
  <transcode mimetype="application/ogg" using="oggflac2raw"/>
  <transcode mimetype="audio/x-flac" using="oggflac2raw"/>
  <transcode mimetype="video/x-matroska" using="video-common"/>
  <transcode mimetype="application/ogg" using="video-common"/>
</mimetype-profile-mappings>

Mediatomb comporte des “profils” de transcodage contenant la commande qui permettra de convertir les videos dans un format connu par le “client”. Toujours dans config.xml, on regarde la section <profils> et on rajoute:

<profile name="video-common" enabled="yes" type="external">
  <avi-fourcc-list mode="ignore">
    <fourcc>DX50</fourcc>
    <fourcc>DM4V</fourcc>
    <fourcc>M4S2</fourcc>
  </avi-fourcc-list>
  <mimetype>video/mpeg</mimetype>
  <accept-url>yes</accept-url>
  <first-resource>yes</first-resource>
  <hide-original-resource>yes</hide-original-resource>
  <accept-ogg-theora>yes</accept-ogg-theora>
  <agent command="/usr/bin/mediatomb-transcode-video" arguments="%in %out"/>
  <buffer size="1048576" chunk-size="26214" fill-size="52428"/>
</profile>

en plus de ceux qui doivent déjà s'y trouver:

<profiles>
  <profile name="oggflac2raw" enabled="yes" type="external">
    <mimetype>audio/L16</mimetype>
    <accept-url>no</accept-url>
    <first-resource>yes</first-resource>
    <accept-ogg-theora>no</accept-ogg-theora>
    <agent command="ogg123" arguments="-d raw -o byteorder:big -f %out %in"/>
    <buffer size="1048576" chunk-size="131072" fill-size="262144"/>
  </profile>
  <profile name="vlcmpeg" enabled="yes" type="external">
    <mimetype>video/mpeg</mimetype>
    <accept-url>yes</accept-url>
    <first-resource>yes</first-resource>
    <accept-ogg-theora>yes</accept-ogg-theora>
    <agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/>
    <buffer size="14400000" chunk-size="512000" fill-size="120000"/>
  </profile>

C'est bon, nous en avons fini avec la configuration de transcodage, il reste seulement à créer le script mediatomb-transcode-video.
On va créer le fichier mediatomb-transcode-video dans /usr/bin/:

nano /usr/bin/mediatomb-transcode-video

et on le remplit :

/usr/bin/mediatomb-transcode-video
#!/bin/bash
FFMPEG_PATH="/usr/bin/ffmpeg"
INPUT="$1"
OUTPUT="$2"
VIDEO_CODEC="mpeg2video"
VIDEO_BITRATE="4096k"
VIDEO_FRAMERATE="25"
AUDIO_CODEC="copy"
FORMAT="mpegts"
exec "${FFMPEG_PATH}" -i "${INPUT}" -vcodec ${VIDEO_CODEC} -b ${VIDEO_BITRATE} \
  -r ${VIDEO_FRAMERATE} -acodec ${AUDIO_CODEC} -f ${FORMAT} - > "${OUTPUT}"

Donner les droits d’exécutions au script

chmod +x /usr/bin/mediatomb-transcode-video
Le script fais appel à ffmpeg qu'il vous revient d'installer préalablement.

On n'a plus qu'à redémarrer mediatomb, de se préparer de quoi manger, une petite bière/tisane et de se poser sur son canapé pour profiter de son travail !!!

Merci à seb95deMLO qui nous a volontier ouvert son site à la copie de ses tutos. :-D

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
2)
celui qui fait tourner mediatomb
3)
ici la PS3
4)
pour cela nous utilisons le type mime vu plus haut