Ceci est une ancienne révision du document !



MediaTomb

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

MediaTomb est implémenté selon les spécifications UPnP MediaServer v1.0 ; il est disponible pour architecture x86, AMD64 pour Ubuntu.

  • Disposer des droits d'administration ;
  • Disposer d'une connexion à Internet configurée et activée ;
  • Avoir une connexion réseau correctement configurée sur le client DLNA (PS3, freebox HD…)
  • (autres ? certainement …)

Depuis Hardy Heron, Mediatomb se trouve dans les dépots Universe d'Ubuntu. Il vous suffit de les activer et d'installer le paquet mediatomb.

Modifications fichiers

En ayant les droits administrateur :

  1. Dans un premier temps, il faut modifier le fichier /etc/mediatomb/config.xml (ou /etc/default/mediatomb avant ubuntu 10.10), pour changer une valeur :
    • Paramétrer <ui enabled="yes" show-tooltips="yes"> (ligne 7)
      sudo sed -i '/ui enabled/s/no/yes/' /etc/mediatomb/config.xml
  2. Puis, re-démarrez le serveur :
    sudo /etc/init.d/mediatomb restart

ou depuis karmic :

sudo service mediatomb restart
sous Lucid le fichier /etc/mediatomb/config.xml contient déjà ces valeurs en ligne 8)
sous Oneiric, le fichier de config est là ~/.mediatomb/config.xml, et pas besoin de faire de modifs.
sous Natty, les modifs à faire sont :
  • Editer le fichier /etc/default/mediatomb et remplir ligne 19 INTERFACE="eth0" (si votre interface reseau est eth0 sinon remplacé par le bon interface)
  • Editer le fichier /etc/mediatomb/config.xml et ligne 7 paramétrer <ui enabled="yes" show-shooltips="yes">
  • Redemarrer le serveur :
    sudo service mediatomb restart

Premier usage

Accès interface web

Vous devez avoir autorisé l'exécution de code JavaScript dans votre navigateur internet. Et pour ceux qui utilisent l'extension AdBlock, vérifiez qu'elle ne filtre pas la page web de mediatomb.

Vous avez accès à l'affichage du serveur, quand il est fonctionnel, par le menu Applications → Son et Vidéo → Mediatomb.

Apparemment, l'usage avec Konqueror, Safari est bogué ! L'utilisation avec Internet Explorer est dégradée … Pleinement fonctionnel avec Mozilla Firefox, Opera et Chromium.

Vous pouvez le voir aussi en ouvrant votre navigateur internet favori, et en tapant l'une ou l'autre des deux URL suivantes :

Pour finir, il est possible d'y avoir accès aussi, en ouvrant votre gestionnaire de fichiers, de vous diriger dans votre répertoire personnel, puis vers .mediatomb, et de lancer mediatomb.html.

Cette interface web vous permettra de choisir quels fichiers vous mettrez en partage. Pour l'utilisation de l'interface web, je vous renvoie vers la documentation officielle … dans l'immédiat.
Vous ne verrez correctement la page web que si le serveur est bien configuré et lancé … voir la section Modifications fichiers !
Vous pouvez rencontrer des problèmes d'affichage des caractères accentués dans l'interface web, notamment si vous lancez mediatomb en tant que service. Pour résoudre ce problème, il faut éditer le fichier config.xml et ajouter les lignes suivantes après la ligne <import hidden-files="no">éditez le fichier
 <</server>
  <import hidden-files="no">
    <filesystem-charset>UTF-8</filesystem-charset>
    <metadata-charset>UTF-8</metadata-charset>
    <playlist-charset>UTF-8</playlist-charset>

Enregistrement base de données

Par défaut, mediatomb fonctionne avec sqlite pour enregistrer les différentes données.

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 redemarrer mediatomb.

Pour info, il est possible d'utiliser une base de données MySQL

Gestion PS3

Il est possible de "lier" la PS3 avec le serveur Mediatomb :

Toujours, avec les droits d'administrateur, modifiez le fichier /etc/mediatomb/config.xml :

  • ligne 23, ( 26 pour 11.04 ornic) changez la valeur 'no' de l'attribut extend par 'yes' :
    <protocolInfo extend="yes"/>
  • ligne 65, (77 pour 11.04 ornic) enlevez les commentaires html de la ligne, afin de ne plus avoir sur cette ligne que ce code :
    <map from="avi" to="video/divx"/>

Redémarrez le serveur.

Vous devez avoir un firmware PS3, version 1.80 minimum.
Si vous n'arrivez pas à lire vos fichiers sur la PS3 (ils apparaissent, mais avec la mention "Données non compatibles", vérifiez que vous modifiez bien le fichier config.xml qui est lu au démarrage de médiatomb. Il en en a en effet un dans /etc/mediatomb, et un autre dans ~/.mediatomb. Vous pouvez choisir le fichier lu par mediatomb avec l'argument -c (par exemple: mediatomb -c /home/utilisateur/.mediatomb/config.xml).
Il est parfois nécessaire de réimporter les fichiers .avi dans Mediatomb (via l'interface web), pas seulement de redémarrer le serveur, pour que les modifications apportées à config.xml soient prises en compte.
Si vous souhaitez utiliser mediatomb avec la PS3 et la Freebox HD, vous devez remplacer la ligne 65:
<map from="avi" to="video/divx"/>

par:

<map from="avi" to="video/avi"/>
Si vous souhaitez utiliser mediatomb avec la PS3 et les fichies HD M2TS ajouter la ligne :
<map from="m2ts" to="video/mpeg"/>

Gestion des TV SAMSUNG

Toujours, avec les droits d'administrateur, modifiez le fichier /etc/mediatomb/config.xml : Après la ligne: <custom-http-headers>, saisir:

 <custom-http-headers>
     <!-- commenter les 2 lignes qui suivent pour compatibilité avec la freebox-->
    <add header="transferMode.dlna.org: Streaming"/>
    <add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000"/>
    </custom-http-headers>

Pour visualiser les mkv: saisir la ligne suivante dans la rubrique <extention-mime-type> :

<map from="mkv" to="video/x-mkv"/>

Ligne 23, changez la valeur 'no' de l'attribut extend par 'yes' (permet entre autre d'avoir les vignettes affichées lors de la visualisation des photos):

<protocolInfo extend="yes"/>

Usage MySQL

Il est possible de fonctionner avec MySQL !

Veuillez dans un premier temps installez le serveur mysql, si cela n'est pas déjà fait … ensuite, il vous faut configurer celui-ci, en tant qu'administrateur toujours :

mysql> CREATE DATABASE db_mediatomb;
mysql> GRANT ALL ON db_mediatomb.* TO 'user_mediatomb'@'localhost' IDENTIFIED BY 'passwd_mediatomb';
Changez 'user_mediatomb' par un nom utilisateur, tel que mediatomb, et 'passwd_mediatomb' par un mot de passe de votre choix … retenez-les !

Ensuite, il faut modifier le fichier /etc/mediatomb/config.xml :

  • ligne 14, paramétrer sqlite sur no :
    <sqlite3 enabled="no">
  • ligne 17, paramétrer mysql sur yes :
    <mysql enabled="yes">
  • ligne 18, laissez host sur localhost, si mediatomb est installé en local … :
    <host>localhost</host>
  • ligne 19, paramétrer le nom utilisateur MySQL, celui que vous avez donné ci-dessus. :
    <username>mediatomb</username>
  • ligne 20, paramétrer le nom de la base database sur db_mediatomb :
    <database>db_mediatomb</database>
  • ligne 21, paramétrer le mot-de-passe MySQL correspondant à l'utilisateur MySQL, ci-dessus. :
    <password>mediatomb</password>

Redémarrez le serveur !

Problèmes rencontrés

Après un mise à jour, il est possible que le service ne redémarre pas :

sudo /etc/init.d/mediatomb start
Starting upnp media server: mediatomb failed!

Pour comprendre d'ou vient le problème

Fichier log

Le journal log se trouve dans /var/log/mediatomb.log … affichez-le au moindre problème.

Vous pouvez cibler précisément toute erreur ou information importante, en tapant ceci :
grep -i warning /var/log/mediatomb.log

ou

grep -i error /var/log/mediatomb.log

, voire pour obtenir les dernières informations inscrites dans ce fichier, à exécuter un :

tail /var/log/mediatomb.log

Erreur accès fichier de configuration

Si vous rencontrez cette erreur :

tail /var/log/mediatomb.log
2010-08-05 21:56:41   ERROR: could not open file /etc/mediatomb/config.xml for writing : Permission denied
2010-08-05 22:00:57    INFO: Loading configuration from: /etc/mediatomb/config.xml
2010-08-05 22:00:58    INFO: UUID generated: b98dbcf5-82d3-43b9-81fc-277c1bc0ebe1

Vérifiez la présence du fichier et les droits :

cd /etc/mediatomb/

puis

ls -l 
total 21
-rw-r--r-- 1 root root 6874 16 juil. 15:56 config.xml

Pour ce problème là, changer les droits de la manière suivante :

 sudo chmod 744 config.xml

puis

sudo /etc/init.d/mediatomb start

Sécuriser le serveur

Le serveur a intégré un gestionnaire de fichier au-travers du navigateur internet.

Configuré par défaut, il permet à n'importe qui de naviguer dans votre système de fichier et ainsi de télécharger n'importe quelle donnée. Dans un environnement non sécurisé, il est nécessaire de désactiver l'interface graphique :

  • ligne 4, paramétrer l'attribut enabled à no :
    <ui enabled="no" />

Dans le contexte d'un environnement LAN, vous pouvez laisser l'interface graphique activée, tout en paramétrant la gestion de compte :

  • ligne 4, laissez l'attribut enabled à yes.
  • ligne 5, paramétrer l'attribut enabled à yes :
    <accounts enabled="yes" session-timeout="30">
  • ligne 6, paramétrer les attributs user et password
La protection par gestion de compte user/password n'est pas assez sécurisé pour un environnement non sécurisé. La documentation officielle précise de ne pas l'utiliser hors du contexte LAN.

Parefeu

Une fois mediatomb installé, les ports suivant doivent être ouvert dans le pare-feu (ufw):

  • 49152 en udp et tcp
  • 1900 en udp

Lanceur

Un moyen simple de démarrer ou stopper Mediatomb, rajouter un lanceur sur un tableau de bord. Si vous ne savez pas rajouter un raccourci ou un lanceur, aidez-vous de cette page très bien expliquée : (raccourci-lanceur).

Sinon tout simplement, faites : clic-droit sur le tableau de bord ⇒ Ajouter au tableau de bord ⇒ Lanceur d'application personnalisé ⇒ + Ajouter. Vous verrez apparaitre une nouvelle fenêtre:

Puis rajouter ces lignes :

  • Type : choisissez "Application"
  • Nom : Mediatomb Start ou ce que vous voulez
  • Commande : gksudo /etc/init.d/mediatomb start
  • Commentaire : Commentaire/description du programme ou vide

Voilà vous obtiendrez un lanceur pour démarrer Mediatomb. Pour arrêter Mediatomb il vous suffit de créer un nouveau lanceur mais cette fois à la ligne suivante :

  • Commande : gksudo /etc/init.d/mediatomb start

remplacez la par :

  • Commande : gksudo /etc/init.d/mediatomb stop

Testé sur Ubuntu 9.04 avec Freebox HD, marche impeccable

Depuis karmic on utilise les commandes :
  • gksudo service mediatomb start
  • gksudo service mediatomb stop

Freebox V5 & V6

Lire les fichiers AVI (divx)

Remplacer la ligne :

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

par:

<map from="avi" to="video/avi"/>

Améliorer la qualité d'affichage des images

Pour les utilisateurs de Freebox, si vous avez un problème de mauvaise qualité d'affichage des images ceci est dû à un bug de la freebox qui affiche la vignette et non l'image si cette dernière possède des données de prise de vue. Il y a deux méthodes pour y remédier.

Méthode 1 : Supprimer les vignettes avec l'outil convert

Pour chaque image de votre collection, lancer la commande suivante :

convert maphoto.jpg -strip photofreebox.jpg
  • maphoto.jpg correspond au nom de l'image pour laquelle la Freebox affiche la vignette ;
  • photofreebox.jpg est le nom du nouveau fichier image qui sera créé à partir du précédent, sans la vignette.

La commande convert fait partie des outils imagemagick, vérifier donc que ce paquet est bien installé.

Méthode 2 : Pré-traitement sur les images

Modifier le fichier /etc/mediatomb/config.xml pour dire à mediatomb d'effectuer un pré-traitement sur les images. Dans la balise <mimetype-profile-mappings> ajouter:

<transcode mimetype="image/jpeg"  using="resizejpeg"/>

Dans la balise <profiles> ajouter un profile

      <profile name="resizejpeg" enabled="yes" type="external">
        <mimetype>image/jpeg</mimetype>
         <agent command="convert" arguments=" -geometry 25% %in %out"/>
        <first-resource>yes</first-resource>
       <hide-original-resource>yes</hide-original-resource>
       <buffer size="1048576" chunk-size="2072" fill-size="262144"/>
      </profile>

Explication: Pour les images on ajoute un traitement qui consiste à lancer la commande convert avec les arguments suivants: -geometry 25% %in %out (ou %in est le fichier en entrée et %out le fichier en sortie. Il est tout a fait possible de modifier cette commande et ces paramètres. Par exemple :

      <profile name="resizejpeg" enabled="yes" type="external">
        <mimetype>image/jpeg</mimetype>
        <first-resource>yes</first-resource>
        <hide-original-resource>yes</hide-original-resource>
        <agent command="convert" arguments="-size 1080x720 %in -auto-orient -resize 112.5%x100% +profile '*' %out"/>
        <buffer size="50000" chunk-size="100" fill-size="100"/>
      </profile>
  • Vérifier que l'attribut enabled de la balise transcoding soit à yes: <transcoding enabled="yes">
  • Seule les images converties sont affichée sur la Freebox. Vos originaux ne sont pas modifiés : http://mediatomb.cc/pages/transcoding (en)
  • Le pré-traitement peut être long et est appliqué à tout le répertoire ce qui allonge le temps d'affichage.
  • Prévoyez suffisamment d'espace mémoire sur votre périphérique de stockage, car les images sont dupliqués sur ce répertoire.

Gérer les sous-titres (sub, srt)

Avec Mediatomb, vous avez la possibilité de transcoder vos vidéos en temps réel. On peut utiliser cette fonction pour y incruster les sous-titres au vidéo.

Méthode officielle

La méthode officielle vous permet de déclarer dans Mediatomb que les fichiers srt (ou sub) sont des fichiers vidéos, aux quels on applique un transcodage grâce à mencoder qu'il vous faudra installer.

Avantages de cette méthode :
  • Permet de gérer plusieurs langues de sous-titres et de pouvoir visionner la vidéo sans les sous-titres.
  • Fonctionne avec la PS3

Inconvénients :

  • Ne fonctionne pas avec la FreeboxV5 qui filtre les fichiers *.srt
  • Les fichiers *.srt sont affiché dans la liste des fichiers du serveur, ce qui peut faire un peu fouillis.

Il faut d'abords déclarer un type mime pour les *.srt.

<extension-mimetype ignore-unknown="no">
  ...
  <map from="srt" to="video/subtitle"/>
</extension-mimetype>

Ajouter un mapping pour ces fichiers :

<mimetype-profile-mappings>
  ...
  <transcode mimetype="video/subtitle" using="mencoder-srt"/>
</mimetype-profile-mappings>

Puis ajouter un profil correspondant au mapping :

<profiles>
  ...
  <profile name="mencoder-srt" 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="/usr/local/bin/mediatomb-mencoder-srt" arguments="%in %out"/>
    <buffer size="1000000" chunk-size="512000" fill-size="20480"/>
  </profile>
</profiles>

Activer le transcodage des vidéos :

<transcoding enabled="yes">

Créer le script qui nous permettra de transcoder les vidéos : /usr/local/bin/mediatomb-mencoder-srt

#!/bin/bash
srt="$1"
output="$2"
# filename must be of the form "movie name.XX[X].srt" or "movie name.srt"
base_name="$(echo $srt | sed 's/\..\{2,3\}\.srt$//' | sed 's/\.srt$//')"

extensions="avi mp4 mpg mov"
for ext in $extensions ; do
    input=$base_name.$ext;
    if [[ -e $input ]]; then break; fi
done

# Detect encoding to use
charset=`file -i "$1" | sed s/.*charset=//g`
subopt=
if [[ "$charset" = "utf-8" ]]
then
  subopt=-utf8
fi

exec mencoder "$input" \
-oac lavc -ovc lavc -of mpeg \
-lavcopts vcodec=mpeg2video:keyint=1:vbitrate=200000:vrc_maxrate=9000:vrc_buf_size=1835 \
-vf harddup -mpegopts muxrate=12000 \
-sub "$srt" $subopt -font "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf" -subfont-autoscale 2 \
-o "$output"

Autre méthode

Une autre méthode consiste à utiliser un script de transcodage de tout les fichiers *.avi en cherchant si un *.srt existe dans le même répertoire (en utilisant une association de transcoding pour les .avi/.mov/… similaire à la méthode précédente.

Avantages de cette méthode :
  • Fonctionne avec la Freebox

Inconvénients :

  • Oblige à tout transcoder même quand il n'y a pas lieu.
  • Oblige à visionner les sous-titres même si on ne les veut pas.

Vous pouvez utiliser un script du genre :

#!/bin/bash
video="$1"
output="$2"

# extract the base name from the filename
basename="${video%.*}"
[[ ! -z "$basename" ]] && srtfile=$basename".srt"

if [[ -e "$srtfile" ]]
then
        exec mencoder "$video" \
        -oac lavc -ovc lavc -of mpeg \
        -lavcopts vcodec=mpeg2video:keyint=1:vbitrate=200000:vrc_maxrate=9000:vrc_buf_size=1835:vstrict=-2 \
        -vf harddup -mpegopts muxrate=12000\
        -sub "$srtfile" -font "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf" -subfont-autoscale 2 \
        -o "$output"
else
        exec mencoder "$video" \
        -oac lavc -ovc lavc -of mpeg \
        -lavcopts vcodec=mpeg2video:keyint=1:vbitrate=200000:vrc_maxrate=9000:vrc_buf_size=1835:vstrict=-2 \
        -vf harddup -mpegopts muxrate=12000 \
        -o "$output"
fi

Script modifié : Forum

Il suffit de désinstaller le programme, tout simplement.

  • mediatomb.1332090771.txt.gz
  • Dernière modification: Le 18/03/2012, 18:12
  • par 81.56.90.67