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: 88.805 ]

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

Particionamento GPT - Conceitos básicos

FreeRADIUS - Conceitos Básicos - Parte II

Personalizando o tema do usplash nos Ubuntu-like

Usando aMSN com plugin Music com suporte ao Juk e Amarok

Dynamic libraries com libtool

Leitura recomendada

Instalando o Asterisk com suporte a MFC/R2

Stopmotion: Crie animações com objetos inanimados e brinquedos

Linux no pendrive com DSL e QEMU

GNU/Linux de Bolso como Ferramenta Anti-Vírus

Como acessar outras máquinas Linux remotamente

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts