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.
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.
En ayant les droits administrateur :
sudo sed -i '/ui enabled/s/no/yes/' /etc/mediatomb/config.xml
sudo /etc/init.d/mediatomb restart
ou depuis karmic :
sudo service mediatomb restart
sudo service mediatomb restart
Vous avez accès à l'affichage du serveur, quand il est fonctionnel, par le menu Applications → Son et Vidéo → Mediatomb.
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.
<</server>
<import hidden-files="no">
<filesystem-charset>UTF-8</filesystem-charset>
<metadata-charset>UTF-8</metadata-charset>
<playlist-charset>UTF-8</playlist-charset>
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…
Il est possible de "lier" la PS3 avec le serveur Mediatomb :
Toujours, avec les droits d'administrateur, modifiez le fichier /etc/mediatomb/config.xml :
<protocolInfo extend="yes"/>
<map from="avi" to="video/divx"/>
Redémarrez le serveur.
<map from="avi" to="video/divx"/>
par:
<map from="avi" to="video/avi"/>
<map from="m2ts" to="video/mpeg"/>
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"/>
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';
Ensuite, il faut modifier le fichier /etc/mediatomb/config.xml :
<sqlite3 enabled="no">
<mysql enabled="yes">
<host>localhost</host>
<username>mediatomb</username>
<database>db_mediatomb</database>
<password>mediatomb</password>
Redémarrez le serveur !
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
Le journal log se trouve dans /var/log/mediatomb.log … affichez-le au moindre problème.
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
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
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 :
<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 :
<accounts enabled="yes" session-timeout="30">
Une fois mediatomb installé, les ports suivant doivent être ouvert dans le pare-feu (ufw):
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 :
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 :
remplacez la par :
Testé sur Ubuntu 9.04 avec Freebox HD, marche impeccable
Remplacer la ligne :
<map from="avi" to="video/divx"/>
par:
<map from="avi" to="video/avi"/>
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.
Pour chaque image de votre collection, lancer la commande suivante :
convert maphoto.jpg -strip photofreebox.jpg
La commande convert fait partie des outils imagemagick, vérifier donc que ce paquet est bien installé.
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>
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.
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.
Inconvénients :
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"
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.
Inconvénients :
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.