Montando um Media Server com o MediaTomb

Esse artigo descreve os passos necessários para instalação do MediaTomb, um poderoso servidor de mídia baseado no protocolo UPnP.

[ Hits: 94.374 ]

Por: Perfil removido em 21/07/2010


Arquivo de configuração



a. Crie um backup do arquivo original:

# mv /home/mediatomb/.mediatomb/config.xml /home/mediatomb/.mediatomb/config.xml_original

b. Altere o arquivo /home/mediatomb/.mediatomb/config.xml conforme suas necessidades. Segue abaixo o meu exemplo:

<?xml version="1.0" encoding="UTF-8"?>
<config version="1" xmlns="http://mediatomb.cc/config/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/config/1 http://mediatomb.cc/config/1.xsd">
  <server>
    <ui enabled="yes" show-tooltips="yes">
      <accounts enabled="no" session-timeout="30">
        <account user="mediatomb" password="mediatomb"/>
      </accounts>
    </ui>
    <name>MediaTomb</name>
    <udn>uuid:c539d7b0-e27e-4b06-a47a-a450772c4675</udn>
    <home>/home/mediatomb/.mediatomb</home>
    <webroot>/usr/local/share/mediatomb/web</webroot>
    <storage>
      <sqlite3 enabled="yes">
        <database-file>mediatomb.db</database-file>
      </sqlite3>
      <mysql enabled="no">
       <host>localhost</host>
       <username>user</username>
       <password>password</password>
       <database>mediatomb</database>
     </mysql>
    </storage>
    <protocolInfo extend="yes"/><!-- For PS3 support change to "yes" -->
    <!--
       Uncomment the lines below to get rid of jerky avi playback on the
       DSM320 or to enable subtitles support on the DSM units
    -->
    <!--
    <custom-http-headers>
      <add header="X-User-Agent: redsonic"/>
    </custom-http-headers>

    <manufacturerURL>redsonic.com</manufacturerURL>
    <modelNumber>105</modelNumber>
    -->
    <!-- Uncomment the line below if you have a Telegent TG100 -->
    <!--
       <upnp-string-limit>101</upnp-string-limit>
    -->
    <extended-runtime-options>
      <ffmpegthumbnailer enabled="yes">
        <thumbnail-size>128</thumbnail-size>
        <seek-percentage>10</seek-percentage>
        <filmstrip-overlay>yes</filmstrip-overlay>
        <workaround-bugs>no</workaround-bugs>
        <image-quality>8</image-quality>
      </ffmpegthumbnailer>
      <mark-played-items enabled="no" suppress-cds-updates="yes">
        <string mode="prepend">*</string>
        <mark>
          <content>video</content>
        </mark>
      </mark-played-items>
    </extended-runtime-options>
  </server>
  <import hidden-files="no">
    <filesystem-charset>UTF-8</filesystem-charset>
    <metadata-charset>UTF-8</metadata-charset>
    <playlist-charset>UTF-8</playlist-charset>
    <autoscan use-inotify="auto">
      <directory location="/home/user/music" mode="inotify" recursive="yes" hidden-files="no"/>
      <directory location="/home/user/picture" mode="inotify" recursive="yes" hidden-files="no"/>
      <directory location="/home/user/video" mode="inotify" recursive="yes" hidden-files="no"/>
    </autoscan>
    <scripting script-charset="UTF-8">
      <common-script>/usr/local/share/mediatomb/js/common.js</common-script>
      <playlist-script>/usr/local/share/mediatomb/js/playlists.js</playlist-script>
      <virtual-layout type="js">
        <import-script>/usr/local/share/mediatomb/js/import.js</import-script>
        <dvd-script>/usr/local/share/mediatomb/js/import-dvd.js</dvd-script>
      </virtual-layout>
    </scripting>
    <mappings>
      <extension-mimetype ignore-unknown="no">
        <map from="mpg"  to="video/mpeg"/>
        <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="avi"  to="video/divx"/>
        <map from="mts"  to="video/mpeg"/>
        <map from="ts"   to="video/mpeg"/>
        <map from="m2ts" to="video/mpeg"/>
        <map from="mkv"  to="video/mpeg"/>
        <map from="mkv"  to="video/x-matroska"/>
        <map from="flac" to="audio/x-flac"/>
        <map from="mov"  to="video/x-quicktime"/>
        <map from="vob"  to="video/mpeg"/>
        <map from="m4v"  to="video/mp4"/>
        <map from="iso"  to="application/x-iso9660-image"/>
      </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"/>
      </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="video/quicktime"             as="mov"/>
        <treat mimetype="video/x-quicktime"           as="mov"/>
        <treat mimetype="application/x-iso9660"       as="dvd"/>
        <treat mimetype="application/x-iso9660-image" as="dvd"/>
      </mimetype-contenttype>
    </mappings>
    <online-content>
      <!-- Make sure to setup a transcoding profile for flv -->
      <YouTube enabled="yes" refresh="28800" update-at-start="yes" purge-after="604800" racy-content="exclude" format="mp4" hd="no">
        <favorites user="youtubeuser"/>
        <playlists user="youtubeuser"/>
        <uploads user="youtubeuser"/>
      <standardfeed feed="most_viewed" time-range="today"/>
      <standardfeed feed="recently_featured" time-range="today"/>
      <standardfeed feed="top_rated" time-range="this_week"/>
      </YouTube>
      <Weborama enabled="no" refresh="28800" update-at-start="no">
        <playlist name="Active" type="playlist" mood="active"/>
        <playlist name="Metal" type="playlist">
          <filter>
            <genres>metal</genres>
          </filter>
        </playlist>
      </Weborama>
      <AppleTrailers enabled="yes" refresh="43200" update-at-start="yes" resolution="640"/>
    </online-content>
  </import>
   <transcoding enabled="yes">
   <mimetype-profile-mappings>
     <transcode mimetype="application/ogg"       using="audio-generic"/>
     <transcode mimetype="audio/x-flac"          using="audio-generic"/>
      <transcode mimetype="video/x-ms-asf"       using="video-generic"/>
   <transcode mimetype="video/x-flv"          using="video-generic"/>
   <transcode mimetype="video/x-matroska"     using="video-generic"/>
   <transcode mimetype="video/mpeg"           using="video-generic"/>
      <transcode mimetype="video/quicktime"      using="video-mov-mpeg"/>
      <transcode mimetype="video/x-quicktime"    using="video-mov-mpeg"/>
   </mimetype-profile-mappings>

   <profiles>
     <profile name="audio-generic" enabled="yes" type="external" >
       <mimetype>audio/L16</mimetype>
         <first-resource>yes</first-resource>
           <accept-url>yes</accept-url>
           <sample-frequency>44100</sample-frequency>
           <audio-channels>2</audio-channels>
           <hide-original-resource>yes</hide-original-resource>
           <agent command="/usr/bin/ffmpeg" arguments="-ac 2 -ar 44100 -y -i %in -f s16be %out"/>
           <buffer size="1048576" chunk-size="4096" fill-size="1024"/>
     </profile>

     <profile name="video-generic" 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/local/bin/mediatomb-video-generic" arguments="%in %out"/>
       <buffer size="1048576" chunk-size="26214" fill-size="52428"/>
    </profile>

     <profile name="video-mov-mpeg" enabled="yes" type="external">
       <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/local/bin/mediatomb-mov-mpeg" arguments="%in %out"/>
       <buffer size="262144" chunk-size="6553" fill-size="13108"/>
    </profile>

   </profiles>
</transcoding>
</config>

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Testando do MediaTomb
   3. Configuração para execução automática
   4. Arquivo de configuração
   5. Scripts de transcodificação
   6. Conclusão e referências
Outros artigos deste autor

Datagramas IP (Protocolo Internet)

Samba 4 - Active Directory Open Source - Ubuntu 14.04.4

Desknotes e Walkpcs

Aprendendo a modelar forms no Kylix

Interagindo com servidores HTTP com Python

Leitura recomendada

Utilização do x11vnc para administração remota de computadores Linux

Cursos online grátis sobre Software Livre!

Biometria: Processamento de imagens capturadas em leitores de impressão digital

Fazendo backup de DVDs

Para não se perder no mundo da memória Flash

  
Comentários
[1] Comentário enviado por sergiomb em 24/07/2010 - 11:13h

A ideia de mostra o mediatomb é muito boa , no fedora se instala assim : yum install mediatomb.
Mas o artigo perde-se em configurações que deviam estar em anexos, para se poder ler melhor o artigo, e fiquei sem perceber para que é que serve , e quem lê .
Estava aqui a ver, na internet, que se pode instalar o mediathumb em discos multimédia como emetec R100, que deve ser bastante interessante (eu tenho um) mas não percebo qual a sua função e para que serve a PS3?

De qualquer modo , agradeço imenso a sua contribuição, e não desanime com as criticas :)

[2] Comentário enviado por removido em 24/07/2010 - 15:24h

Oi sergiomb,

Sim, podemos instalar a versão 0.11 com 'yum' em distros baseadas no Red Hat, ou mesmo com 'apt' em distros baseadas no Debian. Postei esse procedimento no meu blog em 2009:
http://alexloula.blogspot.com/2009/06/upnp-server-com-mediatomb.html

Agora se você quiser usar as novas características da versão 0.12 do MediaTomb, como YouTube e LastFM, você precisa compilar o source de desenvolvimento conforme mostrado nesse artigo.

Se você não entendeu a função do PS3, talvez você não tenha entendido o conceito de Media Server. Conforme mencionado no artigo, o MediaTomb faz 'streaming' de mídia (fotos, músicas, vídeos) para dispositivos compatíveis com UPnP (DLNA). Esse paper detalha um pouco mais essa tecnologia:
http://www.allegrosoft.com/UPnP_DLNA_White_Paper.pdf

Como você digitou "Mediathumb", talvez você tenha confundido com um Media Browser para Windows. Aí com certeza não precisaríamos do PS3.

Quanto aos arquivos de configuração, sinta-se a vontade em postá-los para facilitar o processo.

Obrigado!

[3] Comentário enviado por removido em 31/07/2010 - 07:36h

Alexsander,

Você conseguiu acessar os arquivos a partir de uma TV compativel com DLNA?

Tentei fazer o mediatomb "conversar" com minha TV LG, mas não funcionou.

[4] Comentário enviado por removido em 31/07/2010 - 12:06h

Oi Gomes,

Testei somente com o PS3 e um client java, mas deveria funcionar com a sua TV. Vc consegue acessar a GUI pelo browser?

[5] Comentário enviado por removido em 31/07/2010 - 15:34h

Já instalei usando o apt-get e o seu procedimento e em ambos os casos consegui acessar a GUI pelo navegador. Também liberei as portas no Firewall. Só falta a TV enxergar o media server.

Acho que a TV procura uma porta diferente do padrão. Quando uso o Nero Media Home no Rwindows, funciona.

[6] Comentário enviado por removido em 31/07/2010 - 16:18h

Nos testes que eu fiz nunca encontrei esse problema do client não enxergar o server. O que normalmente acontece é problema de incompatibilidade de formatos de mídia entre o que estamos fazendo streaming com o que o client suporta.
Achei no fórum do Ubuntu um problema parecido com o seu, mas com uma Samsung. A solução foi alterar o http-header.
Altere a tag <custom-http-headers> no seu config.xml de:
<add header="X-User-Agent: redsonic"/>

Para:
<add header="transferMode.dlna.org: Streaming"/>
<add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=017000 00000000000000000000000000"/>

Não esqueça de tirar o comentário dessa seção removendo o "<!--" do começo e o "-->" do final.

[7] Comentário enviado por andrecostall em 05/01/2011 - 17:01h

E ai loula, tdo blz cara ?
Instalei um server com MediaTomb e esta funcionando perfeitamente parabéns cara..
Cara só tenho uma duvida como faço para acessar algum video atraves do Windows media Player, como ficaria a URL para chamar um video por exemplo "Shrek" ?
Abração

[8] Comentário enviado por removido em 10/01/2011 - 11:56h

Oi André,

Nunca tentei usar o WMP como cliente ou servidor UPnP. Pelo explicado nesse link parece que é possível:

http://thewelltemperedcomputer.com/SW/WMP/MediaSharing.htm

Grato.

[9] Comentário enviado por bcsdias em 25/05/2011 - 08:54h

Belo artigo.
Estou tentando configurar o mediatomb no freenas e estou com uma duvida.
o mediatomb esta instalado e rodando, mas nao sei como configurar qual pasta quero deixar disponivel para streaming
como faço esta configuraçao?

[10] Comentário enviado por removido em 26/05/2011 - 13:50h

Oi bcsdias,

Você pode adicionar a(s) pasta(s) pela interface web do Mediatomb ou direto no arquivo de configuração conforme exemplo abaixo:

<autoscan use-inotify="auto">
<directory location="/home/user/music" mode="inotify" recursive="yes" hidden-files="no"/>
<directory location="/home/user/picture" mode="inotify" recursive="yes" hidden-files="no"/>
<directory location="/home/user/video" mode="inotify" recursive="yes" hidden-files="no"/>
</autoscan>

Altere o "location" conforme suas necessidades.

[11] Comentário enviado por alexandreceti em 07/09/2011 - 21:50h

Mais uma dica galera
Para ter mais de 1 trilha de áudio para vídeos de 2 trilhas.
no final do código dos scripts, adicione o parâmetro -newaudio como abaixo.
De:
...-f ${FORMAT} -r ${FPS} - > "${OUTPUT}" 2>/dev/null
Para:
....-f ${FORMAT} -r ${FPS} - > "${OUTPUT}" -newaudio 2>/dev/null.

ai o vídeo passa a ter 2 trilhas..

[12] Comentário enviado por jmcastro em 07/05/2013 - 16:33h

Olá Alexsander, parabém pelo artigo.
Tenho uma dúvida operacional. Sou novato em Linux, estou procurando deixar o Win para trás e com ele o meu cliente dlna WMS.
Instalei o Mediatomb no meu PC e meus arquivos de media estão em um HD separado - instalado em um NAS, ligado a minha rede doméstica - como faço para incluir no Database doMediatomb este HD com meus arquivos de filmes e músicas?
Sei que seu post já foi feito há algum tempo, mas se pudesse me ajudar agradeceria.
Obrigado

Marcelo

[13] Comentário enviado por danieldhdds em 17/09/2014 - 22:12h

MediaTomb plenamente configurado e funcionando no Ubuntu 14.04 LTS, via WiFi no modem Sagemcom e na SmartTV LG.


PS: Baixei ele pelo Synaptics, instalei os pacotes adicionais que ele mostrou que faltava no arquivo de log e pronto. Executei, verifiquei o log, instalei como autoexecutável no boot e reiniciei o sistema. PERFEITO!

Posterior ao reboot do sistema e o server já funcionando perfeitamente fui ver o arquivo de log novamente e constava "Error: iconv..." que, com uma pesquisada na internet encontrei o seguinte site: https://www.gnu.org/software/libiconv/#downloading. Pelo que pude entender, o iconv é um sistema antigo para dar nomes a caminhos, não aceitando vários formatos e etc, portanto tem sua 'atualização'. Vou fazer a instalação agora (se eu aprender a compilar um .tar.gz), voltarei com o resultado e direi se houve alguma modificação no MediaTomb.

(Ia tentar aprender a compilar, mas deixa pra lá. "Em time que está ganhando não se mexe.")


Contribuir com comentário