Mediatomb+IPTV+Transcoding

2011-11-22
2013-05-30
  • Shulik Alexey
    Shulik Alexey
    2011-11-22

    Понадобилось мне пробросить IPTV вещаемое провайдером на телевизор (Samsung UE40D5000PW).
    Цепочка сети следующая:
    Провайдер вещает мультикаст по UDP. Кабель от провайдера идет к маршрутизатору(D-Link Dir-615 E4) с UDPXY и вещает дальше в сеть, но уже HTTP.
    Ноутбук цепляется через WiFi (n-протокол) к точке доступа и через Mediatomb (DLNA) должен отдавать IPTV телеку через LAN.

    Медиатомб настроил на работу с телеком. Телек все прекрасно видит, фильмы и музыку, которая лежит на ноуте цепляет и показывает отлично, однако IPTV не хочет показывать.
    В веб-интерфейсе так прописывал каналы:

    External Link (URL)
    Title: 1 канал
    URL: http://192.168.222.1:4022/udp/255.255.254.1:1234
    Protocol: http-get
    Class: object.item.videoItem
    Description: 1 канал
    Mimetype: video/x-msvideo
    

    но ничено не выходит, телек выдает, что файл не поддерживается. В поле Mimetype пробовал разные значения, включая video/mpeg (если верить VLC, то провайдер вещает видео в mpgv, а аудио в mpga).
    Решил сделать через транскодирование. решил использовать video/x-flv (ибо без разницы, главное заставить его транскодировать, а flv я не использую).
    Прописал канал в медиатомбе следующим образом:

    External Link (URL)
    Title: 1 канал
    URL: http://127.0.0.1:8080/udp/233.3.2.1:5000
    Protocol: http-get
    Class: object.item.videoItem
    Description: 1 канал
    Mimetype: video/x-flv
    

    а в настройках mediatomba прописал транскодирование так:

    <transcoding enabled="yes">
        <mimetype-profile-mappings>
       <transcode mimetype="video/x-flv" using="vlcmpeg"/>
        </mimetype-profile-mappings>
        <profiles>
    <profile name="vlcmpeg" enabled="yes" type="external">
      <mimetype>video/mpeg</mimetype>
     <agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mpgv,vb=2048,fps=25,aenc=ffmpeg,acodec=mpga,ab=128,samplerate=48000,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/>
      <buffer size="262144" chunk-size="131072" fill-size="2144"/>
      <accept-url>yes</accept-url>
      <first-resource>no</first-resource>
    <hide-original-resource>yes</hide-original-resource>
    </profile>
        </profiles>
      </transcoding>
    

    После этого телек стал долго крутить загрузку, а спустя пару менут выдает что файл не поддерживается.
    При этом VLC сыплет кучу всего в лог:

    MediaTomb UPnP Server version 0.12.0 - http://mediatomb.cc/
    ===============================================================================
    Copyright 2005-2008 Gena Batsyan, Sergey Bostandzhyan, Leonhard Wimmer.
    MediaTomb is free software, covered by the GNU General Public License version 2
    2011-11-21 23:08:11    INFO: Loading configuration from: /home/hellsman/.mediatomb/config.xml
    2011-11-21 23:08:11    INFO: Checking configuration...
    2011-11-21 23:08:11    INFO: Setting filesystem import charset to UTF-8
    2011-11-21 23:08:11    INFO: Setting metadata import charset to UTF-8
    2011-11-21 23:08:11    INFO: Setting playlist charset to UTF-8
    2011-11-21 23:08:11    INFO: Configuration check succeeded.
    2011-11-21 23:08:11    INFO: Initialized port: 49152
    2011-11-21 23:08:11    INFO: Server bound to: 192.168.0.1
    2011-11-21 23:08:11    INFO: Adding HTTP header "X-User-Agent: redsonic"
    2011-11-21 23:08:11    INFO: Adding HTTP header "transferMode.dlna.org: Streaming"
    2011-11-21 23:08:11    INFO: Adding HTTP header "contentFeatures.dlna.org:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000"
    2011-11-21 23:08:12    INFO: MediaTomb Web UI can be reached by following this link:
    2011-11-21 23:08:12    INFO: http://192.168.0.1:49152/
    2011-11-21 23:08:12   ERROR: Inotify thread caught exception: Отказано в доступе
    2011-11-21 23:08:19   ERROR: ActionRequest::update(): response is nil, code -115
    2011-11-21 23:08:19   ERROR: ActionRequest::update(): response is nil, code -115
    2011-11-21 23:08:19   ERROR: ActionRequest::update(): response is nil, code -115
    2011-11-21 23:08:19   ERROR: ActionRequest::update(): response is nil, code -115
    2011-11-21 23:08:22    INFO: Arguments: -I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mpgv,vb=2048,fps=25,aenc=ffmpeg,acodec=mpga,ab=128,samplerate=48000,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit
    VLC media player 1.0.6 Goldeneye
    [0x8f03038] dummy interface: using the dummy interface module...
    [0x8f16418] mux_ps mux: Open
    2011-11-21 23:08:24    INFO: Arguments: -I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mpgv,vb=2048,fps=25,aenc=ffmpeg,acodec=mpga,ab=128,samplerate=48000,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit
    VLC media player 1.0.6 Goldeneye
    [0x8e24860] signals interface error: Caught Завершено signal, exiting...
    [0x8f16418] mux_ps mux: Close
    [0x97c5a50] dummy interface: using the dummy interface module...
    [0x97db550] mux_ps mux: Open
    2011-11-21 23:08:27    INFO: Arguments: -I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mpgv,vb=2048,fps=25,aenc=ffmpeg,acodec=mpga,ab=128,samplerate=48000,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit
    VLC media player 1.0.6 Goldeneye
    [0x8e130a0] dummy interface: using the dummy interface module...
    [0x8e267f0] mux_ps mux: Open
    [0x97c7650] main input error: ES_OUT_SET_(GROUP_)PCR  is called too late, increasing pts_delay to 1200 ms
    [0x97c7650] main input error: ES_OUT_RESET_PCR called
    [0x96e7800] signals interface error: Caught Завершено signal, exiting...
    2011-11-21 23:08:29    INFO: Arguments: -I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mpgv,vb=2048,fps=25,aenc=ffmpeg,acodec=mpga,ab=128,samplerate=48000,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit
    VLC media player 1.0.6 Goldeneye
    [0x917a658] dummy interface: using the dummy interface module...
    [0x918eb38] mux_ps mux: Open
    [0x8d33a98] signals interface error: Caught Завершено signal, exiting...
    [0x8e267f0] mux_ps mux: Close
    2011-11-21 23:08:33    INFO: Arguments: -I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mpgv,vb=2048,fps=25,aenc=ffmpeg,acodec=mpga,ab=128,samplerate=48000,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit
    VLC media player 1.0.6 Goldeneye
    [0x8d4d810] dummy interface: using the dummy interface module...
    [0x8d61a78] mux_ps mux: Open
    [0x909aa30] signals interface error: Caught Завершено signal, exiting...
    [0x918eb38] mux_ps mux: Close
    [0x8c6da30] signals interface error: Caught Завершено signal, exiting...
    

    Помогите пожалуйста правильно натроить связку mediatomb+iptv+телевизор.
    P.S.
    Конвиг медиатомба полный

    <?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>
    <interface> eth0 </interface>
        <name>MediaTomb</name>
        <udn>uuid:4d7f57dc-8d7c-4a82-bddf-8faf0fd26d18</udn>
        <home>/home/hellsman/.mediatomb</home>
        <webroot>/usr/share/mediatomb/web</webroot>
      
        <storage>
          <sqlite3 enabled="yes">
            <database-file>mediatomb.db</database-file>
          </sqlite3>
        </storage>
        <protocolInfo extend="yes"/>
          <custom-http-headers>
            <add header="X-User-Agent: redsonic"/>
            <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>
          <extended-runtime-options>
          <ffmpegthumbnailer enabled="yes">
            <thumbnail-size>128</thumbnail-size>
            <seek-percentage>5</seek-percentage>
            <filmstrip-overlay>yes</filmstrip-overlay>
            <workaround-bugs>no</workaround-bugs>
            <image-quality>8</image-quality>
          </ffmpegthumbnailer>
          <mark-played-items enabled="yes" suppress-cds-updates="yes">
            <string mode="prepend">*++*</string>
            <mark>
              <content>video</content>
            </mark>
          </mark-played-items>
        </extended-runtime-options>
      </server>
      <import hidden-files="no">
        <scripting script-charset="UTF-8">
          <common-script>/usr/share/mediatomb/js/common.js</common-script>
          <playlist-script>/usr/share/mediatomb/js/playlists.js</playlist-script>
          <virtual-layout type="builtin">
            <import-script>/usr/share/mediatomb/js/import.js</import-script>
            <dvd-script>/usr/share/mediatomb/js/import-dvd.js</dvd-script>
          </virtual-layout>
        </scripting>
        <mappings>
         
            <map from="mp3" to="audio/mpeg"/>
            <map from="ogx" to="application/ogg"/>
            <map from="ogv" to="video/ogg"/>
            <map from="oga" to="audio/ogg"/>
            <map from="ogg" to="audio/ogg"/>
            <map from="ogm" to="video/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="mkv" to="video/x-mkv"/>
            <map from="mka" to="audio/x-matroska"/>
    <map from="avi" to="video/mpeg"/>
     <extension-mimetype ignore-unknown="no">
        <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="ts" to="video/mpeg"/>
        <map from="m2ts" to="video/mpeg"/>
        <map from="vob" to="video/mpeg"/>
        <map from="wav" to="audio/wav"/>
        <map from="mpg" to="video/mpeg"/>
        <map from="aac" to="audio/x-aac"/>
        <map from="m4a" to="audio/mp4"/>
        <map from="mkv" to="video/x-matroska"/>
        <map from="mov" to="video/x-quicktime"/>
        <map from="flv" to="video/x-flv"/>
        <map from="divx" to="video/divx"/>
        <map from="avi" to="video/x-msvideo"/>
      </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="application/x-iso9660" as="dvd"/>
            <treat mimetype="application/x-iso9660-image" as="dvd"/>
          </mimetype-contenttype>
        </mappings>
      </import>
      <transcoding enabled="yes">
        <mimetype-profile-mappings>
       <transcode mimetype="video/x-flv" using="vlcmpeg"/>
        </mimetype-profile-mappings>
        <profiles>
    <profile name="vlcmpeg" enabled="yes" type="external">
      <mimetype>video/mpeg</mimetype>
     <agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mpgv,vb=2048,fps=25,aenc=ffmpeg,acodec=mpga,ab=128,samplerate=48000,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/>
      <buffer size="262144" chunk-size="131072" fill-size="2144"/>
      <accept-url>yes</accept-url>
      <first-resource>no</first-resource>
    <hide-original-resource>yes</hide-original-resource>
    </profile>
        </profiles>
      </transcoding>
    </config>
    
     

  • Anonymous
    2012-12-16

    Может кто сталкивался с такой проблемой при попытке подключиться к mediatomb'у выдается сообщение "Не удалось выполнить запрос. MEDIA PLAY вернется в основной экран"? Телик Samsung smart-tv ue40es6727. Конфиги откуда только не брал, выложенный выше тоже пробовал. Виндовский Home Media Server определяется на телике нормально и к нему можно подключиться. Пробовал и miniDLNA. С ним тоже телик подружился влет. А вот с mediatomb ну никак не хочет. Может кто натолкнет на мысль.