MediaTomb

From Gentoo Wiki
Jump to: navigation, search
External resources

MediaTomb is an open source (GPL) UPnP MediaServer with a nice web user interface. It allows you to stream your digital media through your home network and access it on a variety of UPnP compatible devices.

Installation

Kernel

MediaTomb supports inotify, which is a file-monitoring mechanism that allows MediaTomb to be notified about changes to files immediately. For more information, please consult Section 2.1.5 of the MediaTomb User Interface documentation.

The following kernel options are required for inotify support.

KERNEL
    File systems --->
      [*] Inotify support for userspace

Software

USE flag (what is that?) Default Recommended Description
curl No Yes Support YouTube and external media sources (e.g. internet radio)
debug No No Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see http://www.gentoo.org/proj/en/qa/backtraces.xml
exif Yes Yes Add support for reading EXIF headers from JPEG and TIFF images
ffmpeg Yes Yes Enable ffmpeg/libav-based audio/video codec support
flac No Yes Enable FLAC metadata/artwork support
id3tag No No Use media-libs/libid3tag for reading files' metadata rather than taglib
inotify No Yes Enable inotify filesystem monitoring support
javascript Yes Yes Enable SpiderMonkey JavaScript engine support. Allows the creation of a virtual container layout based on the extracted metadata.
lastfm No Enable last.fm support
libextractor No No Use libextractor to gather files' metadata
magic Yes Yes Use libmagic to determine file types
mp4 Yes Yes Enables MP4 metadata extraction support.
mysql No Use dev-db/mysql as backend rather than SQLite3
sqlite Yes Yes Add support for sqlite - embedded sql database
taglib Yes Yes Use media-libs/taglib for reading files' metadata rather than id3lib
thumbnail No Yes Enables video thumbnails generation throughmedia-video/ffmpegthumbnailer
zlib Yes Yes Add support for zlib (de)compression
  • Install MediaTomb.
root #emerge --ask net-misc/mediatomb

Configuration

Network

  • To set the network interface that MediaTomb binds to, add the following to the MEDIATOMB_OPTIONS variable, and substitute network_interface with the appropriate value e.g. MEDIATOMB_OPTIONS="-e eth0"
FILE /etc/conf.d/mediatomb
MEDIATOMB_OPTIONS="-e network_interface"
  • To set the IP address that MediaTomb binds to, add the following to the MEDIATOMB_OPTIONS variable, and substitute ip_address with the appropriate value e.g. MEDIATOMB_OPTIONS="-e 192.168.0.1"
FILE /etc/conf.d/mediatomb
MEDIATOMB_OPTIONS="-i ip_address"

MySQL

Note
MySQL support requires USE flag mysql to be enabled for the net-misc/mediatomb package.
  • To enable MySQL support, set the enabled attribute to yes for the <mysql> element.
FILE /etc/mediatomb/config.xml
      <mysql enabled="yes">
  • Set the enabled attribute to no for the <sqlite3> element.
FILE /etc/mediatomb/config.xml
      <sqlite3 enabled="no">
  • Set the <host>, <database>, <username> and <password> elements.
FILE /etc/mediatomb/config.xml
        <host>host</host>
        <database>database</database>
        <username>username</username>
        <password>password</password>
  • Login to MySQL and create the MediaTomb database and user, using the host, database, username and password values set in the MediaTomb configuration file.
mysql>CREATE DATABASE database;
mysql>GRANT ALL ON database.* TO 'username'@'host' IDENTIFIED BY 'password';

Transcoding

MediaTomb supports transcoding media files to formats that are supported by the UPnP device being used. The default Gentoo configuration file uses FFmpeg to transcode FLAC, Flash, Theora and Vorbis files. For more information, please consult section 6.3 of the MediaTomb documentation.

  • To enable transcoding support, set the enabled attribute to yes for the <transcoding> element.
FILE /etc/mediatomb/config.xml
  <transcoding enabled="yes">
  • For every additional mimetype that requires transcoding, add the following section in between the <mimetype-profile-mappings> and </mimetype-profile-mappings> elements and substitute mimetype and profile with the appropriate values e.g. <transcode mimetype="video/quicktime" using="video2mpeg"/>
FILE /etc/mediatomb/config.xml
      <transcode mimetype="mimetype" using="profile"/>
  • Install FFmpeg.
Note
Transcoding support requires the USE flag encode to be enabled for the media-video/ffmpeg package.
root #emerge --ask --noreplace media-video/ffmpeg

Alternative transcoders

MediaTomb's transcoding support is very flexible and any application capable of transcoding can be used. For more information, please consult the MediaTomb Transcoding documentation.

VLC

Audio

  • To enable VLC audio transcoding, replace the <agent> element for the audio2pcm profile with the following:
FILE /etc/mediatomb/config.xml
        <agent command="vlc" arguments="%in -I dummy --sout=#transcode{acodec=s16b,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=raw,dst=%out} vlc://quit"/>
  • Set the <accept-url> element to yes for the audio2pcm profile.
FILE /etc/mediatomb/config.xml
        <accept-url>yes</accept-url>

Video

  • To enable VLC video transcoding, replace the <agent> element for the video2mpeg profile with the following:
FILE /etc/mediatomb/config.xml
        <agent command="vlc" arguments="%in -I dummy --sout=#transcode{vcodec=mp2v,vb=4096,fps=25,acodec=mpga,ab=192,samplerate=48000,channels=2,audio-sync}:standard{access=file,mux=ps,dst=%out} vlc://quit"/>
  • Set the <accept-url> element to yes for the video2mpeg profile.
FILE /etc/mediatomb/config.xml
        <accept-url>yes</accept-url>
  • Install VLC.
Note
Transcoding support requires the USE flags ffmpeg and encode to be enabled for the media-video/vlc package. It also requires the USE flag encode to be enabled for the media-video/ffmpeg package.
root #emerge --ask --noreplace media-video/vlc
MPlayer

Video

  • To enable MPlayer video transcoding, replace the <agent> element for the video2mpeg profile with the following.
FILE /etc/mediatomb/config.xml
        <agent command="mencoder" arguments="%in -o %out -ovc lavc -oac lavc -lavcopts vcodec=mpeg2video:vbitrate=4096:vrc_minrate=0:vrc_maxrate=9800:vrc_buf_size=1835:keyint=15:vstrict=0:acodec=mp2:abitrate=192 -vf harddup -af lavcresample=48000:channels=2 -srate 48000 -ofps 25 -of mpeg -mpegopts format=mpeg2:tsaf"/>
  • Set the <accept-url> element to yes for the video2mpeg profile.
FILE /etc/mediatomb/config.xml
        <accept-url>yes</accept-url>
  • Install MPlayer.
Note
Transcoding support requires the USE flag encode to be enabled for the media-video/mplayer package.
root #emerge --ask --noreplace media-video/mplayer

DLNA

Note
MediaTomb doesn't implement the DLNA specification and is not a DLNA media server. It does however offer basic support for some DLNA devices e.g. PlayStation 3.
  • To enable DLNA support, set the extend attribute to yes for the <protocolInfo> element.
FILE /etc/mediatomb/config.xml
    <protocolInfo extend="yes">
  • For DLNA enabled TVs (e.g. Samsung), add the following section in between the <server> and </server> elements.
FILE /etc/mediatomb/config.xml
    <custom-http-headers>
      <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>

Online services

MediaTomb supports streaming online content to UPnP devices from services such as YouTube. For more information, please consult Section 6.2.1 of the MediaTomb documentation.

YouTube

Important
There are reports on the MediaTomb forum indicating that YouTube support is currently broken.
Note
The content to be streamed needs to be specified beforehand. The default Gentoo configuration file only specifies sample content. For more information, please consult Section 6.2.2 of the MediaTomb documentation.
  • To enable YouTube support, set the enabled attribute to yes for the <YouTube> element.
FILE /etc/mediatomb/config.xml
      <YouTube enabled="yes" refresh="28800" update-at-start="yes" purge-after="604800" racy-content="exclude" format="mp4" hd="no">
  • To enable high definition (if available) YouTube videos, set the hd attribute to yes for the <YouTube> element.
FILE /etc/mediatomb/config.xml
      <YouTube enabled="yes" refresh="28800" update-at-start="yes" purge-after="604800" racy-content="exclude" format="mp4" hd="yes">
  • For UPnP devices that don't support MP4 video, enable transcoding and add the following section in between the <mimetype-profile-mappings> and </mimetype-profile-mappings> elements.
FILE /etc/mediatomb/config.xml
      <transcode mimetype="video/mp4" using="video2mpeg"/>

Video thumbnails

Note
Video thumbnail support requires the USE flags ffmpeg and thumbnail to be enabled for the net-misc/mediatomb package.
  • To enable video thumbnail support, set the enabled attribute to yes for the <ffmpegthumbnailer> element.
FILE /etc/mediatomb/config.xml
      <ffmpegthumbnailer enabled="yes">
  • To overlay a filmstrip border on the generated thumbnail, set the <filmstrip-overlay> element to yes.
FILE /etc/mediatomb/config.xml
        <filmstrip-overlay>yes</filmstrip-overlay>
  • For DLNA enabled devices that support video thumbnails (e.g. PlayStation 3), set the extend attribute to yes for the <protocolInfo> element.
FILE /etc/mediatomb/config.xml
    <protocolInfo extend="yes">

Raw images

  • To enable (Canon CR2 and Nikon NEF) raw image support, enable transcoding and add the following section in between the <profile> and </profile> elements.
FILE /etc/mediatomb/config.xml
      <profile name="raw2jpeg" enabled="yes" type="external">
        <mimetype>image/jpeg</mimetype>
        <accept-url>no</accept-url>
        <first-resource>yes</first-resource>
        <hide-original-resource>yes</hide-original-resource>
        <use-chunked-encoding>no</use-chunked-encoding>
        <agent command="/usr/local/bin/mediatomb-raw2jpeg" arguments="%in %out"/>
        <buffer size="524288" chunk-size="512" fill-size="1024"/>
      </profile>
  • Add the following section in between the <mimetype-profile-mappings> and </mimetype-profile-mappings> elements.
FILE /etc/mediatomb/config.xml
      <transcode mimetype="image/raw" using="raw2jpeg"/>
  • For every additional raw image format (supported by dcraw), add the following section in between the <extension-mimetype ignore-unknown="no"> and </extension-mimetype> elements, and substitute extension with the appropriate value e.g. <map from="kdc" to="image/raw"/>
FILE /etc/mediatomb/config.xml
        <map from="extension" to="image/raw"/>
  • Since dcraw only outputs to stdout, the output will need to be redirected with the following script.
FILE /usr/local/bin/mediatomb-raw2jpeg
#!/bin/sh
 
DCRAW_PATH="/usr/bin/dcraw"
INPUT="$1"
OUTPUT="$2"
 
exec "${DCRAW_PATH}" -e -c "${INPUT}" > "${OUTPUT}"
  • Install dcraw.
root #emerge --ask --noreplace media-gfx/dcraw

Starting

  • To start MediaTomb.
root #rc-service mediatomb start
  • To start MediaTomb at boot.
root #rc-update add mediatomb default

Troubleshooting

Mimetype mapping

Important
After adding or changing a mimetype mapping, media needs to be imported again since mimetype mappings are only set during import.

MediaTomb (via libmagic) may identify the mimetype of some files incorrectly. A common case is where videos with the mp4 extension are identified as the mimetype audio/mp4. To override the mimetype returned by libmagic, add the following section in between the <extension-mimetype ignore-unknown="no"> and </extension-mimetype> elements, and substitute extension and mimetype with the appropriate values e.g. <map from="mp4" to="video/mp4"/>

FILE /etc/mediatomb/config.xml
        <map from="extension" to="mimetype"/>