Collaboration with Oppo

2010-01-21
2013-05-30
  • Some of you may have heard of the Oppo BDP-83 Blu-ray player. It's currently considered one of the best, if not THE best, Blu-ray player out there and is getting amazing reviews from all over. For detailed info and a list of articles/reviews, see here:

    http://www.avsforum.com/avs-vb/showthread.php?t=1124287

    Anyhow, as of the latest firmware they have added a new experimental feature: streaming video support from a DLNA server. As Mediatomb appears to the best (or most-popular?) transcoding DLNA server for unix-type OSes, I am thinking this is a great opportunity for the accessible tech support of an open-source project (Mediatomb) to work with the (unusually) amazingly-accessible tech support of a consumer electronics manufacturer to help ensure that there's at least one solution that works as well as it can possibly be made to.

    I personally run FreeBSD and a number of BDP-83 owners run various flavors of Linux. Their experiences with various DLNA servers (including Mediatomb) can be found on this thread:

    http://www.avsforum.com/avs-vb/showthread.php?t=1215071

    I'd love to see Mediatomb coders communicating with Oppo to share notes and work on existing snags, ultimately helping Oppo polish up their DLNA support implementation as well as allow a known "turn-key" settings/solution.

    Unfortunately I have zero experience with DLNA servers going into this, but I'm interested to try it out.

     
  • Jin
    Jin
    2010-01-21

    Hi,

    just so I understand correctly: are you an Oppo user or are you somehow involved in its development?

    Keeping in mind, that MediaTomb is not a DLNA but only a UPnP server, it should still work unless the firmware is coded in "Sony style" :)

    Anyway, I saw what formats are supported, I think this should work out of the box already. For MKV I added default extension to mimetype mappings in SVN because it turnd out that libmagic does not detect mkv files correctly, so if you are using the released version you should add:

            <map from="mkv" to="video/x-matroska"/>
            <map from="mka" to="audio/x-matroska"/>
    

    to the extension-mimetype section.

    As for transcoding divx and other stuff - I guess the default vlcmpeg profile should do it, you'd just have to setup what mimetype you wish to transcode (like video/x-msvideo, video/mp4 and so on).

    It was not clear to me if the player supports LPCM, this format was not listed in the first post, if it does, you cold use enable the predefined oggflac2raw profile to transcode ogg/flac to LPCM, there is also an ffmpeg based profile that transcodes audio to LPCM, it's in the transcoding wiki on our homepage. If the player does not support LPCM, you could still transcode whatever audio you have to MP3.

    Of course I can only talk theory here - I do not have this player so I can't do any testing, it'll be up to you to find out what works and what does not work :)

    Kind regards,
    Jin

     
  • varb
    varb
    2010-02-07

    Hi,

    i am an Oppo 83 user and would like to see mkv files from the hdd in linux sat receiver , but i can't see mkv files under mynetwork folder?I can see folders where files are but no mkvs itself.I post the mediatomb config file:

    <?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">
          <accounts enabled="no" session-timeout="30">
            <account user="mediatomb" password="mediatomb"/>
          </accounts>
        </ui>
        <name>MediaTomb</name>
        <udn>uuid:24dacc93-5a3d-4b0d-ac4e-c841907f3c6d</udn>
        <home>/media/hdd/mediatomb/config</home>
        <webroot>/media/hdd</webroot>
        <storage>
          <sqlite3 enabled="yes">
            <database-file>mediatomb.db</database-file>
          </sqlite3>
        </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>
        ->
      </server>
      <import hidden-files="no">
        <magic-file>usr/share/file/magic</magic-file>
        <scripting script-charset="UTF-8">
          <common-script>/media/hdd/mediatomb/usr/share/mediatomb/js/common.js</common-script>
          <playlist-script>/media/hdd/mediatomb/usr/share/mediatomb/js/playlists.js</playlist-script>
          <virtual-layout type="builtin">
            <import-script>/media/hdd/mediatomb/usr/share/mediatomb/js/import.js</import-script>
          </virtual-layout>
        </scripting>
        <mappings>
          <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="mkv" to="video/x-matroska"/> 
            <map from="mka" to="audio/x-matroska"/>
            <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"/>
            <!- Uncomment the line below for PS3 divx support ->
            <!- <map from="avi" to="video/divx"/> ->
            <!- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 ->
            <!- <map from="avi" to="video/avi"/> ->
          </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"/>
          </mimetype-contenttype>
        </mappings>
      </import>
      <transcoding enabled="no">
        <mimetype-profile-mappings>
          <transcode mimetype="video/x-flv" using="vlcmpeg"/>
          <transcode mimetype="application/ogg" using="vlcmpeg"/>
          <transcode mimetype="application/ogg" using="oggflac2raw"/>
          <transcode mimetype="audio/x-flac" using="oggflac2raw"/>
        </mimetype-profile-mappings>
        <profiles>
          <profile name="oggflac2raw" enabled="no" type="external">
            <mimetype>audio/L16</mimetype>
            <accept-url>no</accept-url>
            <first-resource>yes</first-resource>
            <accept-ogg-theora>no</accept-ogg-theora>
            <agent command="ogg123" arguments="-d raw -f %out %in"/>
            <buffer size="1048576" chunk-size="131072" fill-size="262144"/>
          </profile>
          <profile name="vlcmpeg" enabled="no" 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="vlc" arguments="-I dummy %in -sout #transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/>
            <buffer size="14400000" chunk-size="512000" fill-size="120000"/>
          </profile>
        </profiles>
      </transcoding>
    </config>

    i made the changes but no luck.Any help would be appriciated!

     
  • Jin
    Jin
    2010-02-07

    I see that you added the changes which I suggested, did you reimport the mkv files after that? Just check if the mime type is set, navigate to one of the mkv files in the web UI and hit the edit icon.

    If the mime type is set correctly, then I fear I can't tell you more, I do not have this device, I do not know what it expects to see there. If you know a UPnP server from which serving MKV files to your device works, you could make a wireshark log and I could check what XML the other server is sending. Or, ask the manufacturer/tech support. Otherwise I can't do much - it's a black box for us.

     
  • varb
    varb
    2010-02-08

    Its really helped!Thanks Jin! config file looks like this now:

    <?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">
          <accounts enabled="no" session-timeout="30">
            <account user="mediatomb" password="mediatomb"/>
          </accounts>
        </ui>
        <name>MediaTomb</name>
        <udn>uuid:cddaca5a-ef16-431b-bda6-1efacc55ecc9</udn>
        <home>/media/hdd/mediatomb/config</home>
        <webroot>/media/hdd/mediatomb/usr/share/mediatomb/web</webroot>
        <storage>
          <sqlite3 enabled="yes">
            <database-file>mediatomb.db</database-file>
          </sqlite3>
        </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="transferMode.dlna.org: Streaming" />
          <add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=017000 00000000000000000000000000" /> <add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=017000 00000000000000000000000000" />
        </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>
        ->
      </server>
      <import hidden-files="no">
        <magic-file>usr/share/file/magic</magic-file>
        <scripting script-charset="UTF-8">
          <common-script>/media/hdd/mediatomb/usr/share/mediatomb/js/common.js</common-script>
          <playlist-script>/media/hdd/mediatomb/usr/share/mediatomb/js/playlists.js</playlist-script>
          <virtual-layout type="builtin">
            <import-script>/media/hdd/mediatomb/usr/share/mediatomb/js/import.js</import-script>
          </virtual-layout>
        </scripting>
        <mappings>
          <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="flv" to="video/x-flv"/>
            <map from="avi" to="video/x-msvideo"/>
            <map from="ts" to="video/mpeg"/>
            <map from="divx" to="video/mpeg"/>
            <map from="mp4" to="video/MP4V-ES"/>
            <map from="mkv" to="video/x-matroska"/> 
            <map from="mka" to="audio/x-matroska"/>
            <!- Uncomment the line below for PS3 divx support ->
            <!- <map from="avi" to="video/divx"/> ->
            <!- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 ->
            <!- <map from="avi" to="video/avi"/> ->
          </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"/>
          </mimetype-contenttype>
        </mappings>
      </import>
      <transcoding enabled="no">
        <mimetype-profile-mappings>
          <transcode mimetype="video/x-flv" using="vlcmpeg"/>
          <transcode mimetype="application/ogg" using="vlcmpeg"/>
          <transcode mimetype="application/ogg" using="oggflac2raw"/>
          <transcode mimetype="audio/x-flac" using="oggflac2raw"/>
        </mimetype-profile-mappings>
        <profiles>
          <profile name="oggflac2raw" enabled="no" type="external">
            <mimetype>audio/L16</mimetype>
            <accept-url>no</accept-url>
            <first-resource>yes</first-resource>
            <accept-ogg-theora>no</accept-ogg-theora>
            <agent command="ogg123" arguments="-d raw -f %out %in"/>
            <buffer size="1048576" chunk-size="131072" fill-size="262144"/>
          </profile>
          <profile name="vlcmpeg" enabled="no" 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="vlc" arguments="-I dummy %in -sout #transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/>
            <buffer size="14400000" chunk-size="512000" fill-size="120000"/>
          </profile>
        </profiles>
      </transcoding>
    </config>

    i got some advice from here also
    http://translate.google.com/translate?js=y&prev=_t&hl=en&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fdream.altmaster.net%2Fshowthread.php%3Fp%3D60491&sl=ru&tl=en

    this is translated version from russia.I dont know if the <custom-http-headers> lines are really nessesary but i did like
    guided though i did't manage to get autostart to work.So i have a couple of questions releated to .srt subtitles support
    and static IP aadress.What line do i need to change in config.xml to assign a certain IP?And is there .srt file support in mediatomb available?Thanks again !

     
  • Jin
    Jin
    2010-02-08

    OK.. first - what exactly did work? You can stream the mkv files now?

    Second, could you please try removing the custom-http header stuff and check if it still works?

    > What line do i need to change in config.xml to assign a certain IP?

    You mean so that the server binds to a particular ip or interface? Come on.. at least pretend you read the docs! :(
    <ip> or <interface> under the server tag.

    > And is there .srt file support in mediatomb available?

    There is no subtitle support defined by UPnP, some players, like the DSM 320 implement this by doing "blind" HTTP requests, i.e. they request the same url as the video, just add the .srt extension. We do support this non-standard way, but this depends solely on the player.

    What can be done is - use transcoding in combination with VLC and its soverlay option, to transcode and blend in the subtitles into the transcoded stream. This of course would work with any device, but having to transcode is not very nice.

    So the question should be - does your player support subtitles over UPnP, and if yes - how?

     
  • varb
    varb
    2010-02-09

    hei,

    Yes I can stream .mkv files now and probably others which is supported by OPPO(have't tried all) .Removed custom-http header lines and mkv sreaming work as well, so no neccesary for Oppo 83 device.
    I also could bind the IP I whiched for and yes i read the docs and tutorials but at first i add the <ip>  line right behind the server tag and it  gave me an error, now i put at the end of it and server bound correctly.
    There have't been much time to experiment with .srt subtitles but i give a shot in near future and let you know.

     
  • Jin
    Jin
    2010-02-10

    Could you please paste me how you added the IP when it errored out? it should be inside the server section, i.e.

    <server>
       <ip>xxx.xxx.xxx.xxx</ip>
    
     
  • varb
    varb
    2010-02-11

    I think  it was like this: ( not sure 100%, maybe missed some characters before..uups)

    <?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>
    <ip>192.168.1.102</ip>
    <ui enabled="yes">
    <accounts enabled="no" session-timeout="30">
    <account user="mediatomb" password="mediatomb"/>
    </accounts>
    </ui>
    <name>MediaTomb</name>
    <udn>uuid:cddaca5a-ef16-431b-bda6-1efacc55ecc9</udn>
    <home>/media/hdd/mediatomb/config</home>
    <webroot>/media/hdd/mediatomb/usr/share/mediatomb/web</webroot>
    <storage>
    <sqlite3 enabled="yes">
    <database-file>mediatomb.db</database-file>
    </sqlite3>
    </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="transferMode.dlna.org: Streaming" />
    <add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=017000 00000000000000000000000000" /> <add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=017000 00000000000000000000000000" />
    </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>
    ->
    "now the IP is here"
    </server>

    and i have no idea how to implement  subtitles without transcoding video stream.Do you have any advice I should try?

    Thank you