Difference between revisions of "Media Play and DLNA"


From SamyGO
Jump to: navigation, search
(Created page with 'These Samsung TVs are capable of playing serveral audio, video and image formats. These media contents can be played from an USB mass storage device (pendrive, USB hard disk), or…')
 
m
 
(10 intermediate revisions by 5 users not shown)
Line 355: Line 355:
  
 
The TV also known to have limitations for H.264 (e.g. MKV playing), the number of supported Reference Frames in the H.264 encoded content is limited. Some say that at most 9 reference frames are supported, however I personally experienced problems (Unsupported video format error, or instant TV poweroff) with 1920x1080 H.264 video with 8 reference frames.
 
The TV also known to have limitations for H.264 (e.g. MKV playing), the number of supported Reference Frames in the H.264 encoded content is limited. Some say that at most 9 reference frames are supported, however I personally experienced problems (Unsupported video format error, or instant TV poweroff) with 1920x1080 H.264 video with 8 reference frames.
 +
 +
== DLNA ==
 +
DLNA media play has stricter limitations than USB media play. This is significant reason for the firmware modifications to use NFS or SMB/CIFS (which should have the same limitations as USB media play). These limitations of DLNA include the following:
 +
* You can't use features like FWD, RWD, PAUSE with some DLNA servers, and even with the Samsung PC Share Manager, sometimes (depending on media type and file size) some of these functions are not available.
 +
* With some DLNA servers, some codecs are not supported when using DLNA but work fine via USB/NFS.
 +
* You can't select the audio channel of a multi-language media file with DLNA playback.
 +
 +
Beside the Samsung software (Samsung PC Share Manager), you can also use the open source DLNA servers like uShare or Mediathomb. These can also be used on Mac OS X or Linux. On OSX, they're hard to install because you need to compile them by yourself. Out of the box, none of the media servers below (other than Samsung PC Share Manager) work 100% well. Below are tested programs with comments on current problems, maybe someone can provide some resolutions, and maybe it will help somebody.
 +
 +
Windows XP:
 +
* Samsung PC Share Manager - Subtitles OK, all ok.
 +
* Tversity Media Server - Unsupported file format on every video file, tried transcoding and etc combinations.
 +
* FUPPES - Unsupported file format on every video file.
 +
* TwonkyMedia - DIvX works, rest (including mkv) - Unsupported file format
 +
* PlayOn + with plugin "LocalFiles" - randomly drops out from video, sometimes jamming.
 +
* Mezzmo - Unsupported file format on every video file.
 +
* CyberLinkMediaServer - no subtitles, no pausing, beside this everything works
 +
* Asset - only audio
 +
* [http://www.wildmediaserver.com/ Wild Media Server] - (reported to work fine)
 +
 +
Linux:
 +
* Mediatomb - By default, unsupported file format on every video file. However it can be configured to support every file the PC Share Manager supports (even with FF, PAUSE and REWIND support where the PC Share Manager would support it), except the subtitles.
 +
* uShare - Unsupported file format on every video file
 +
* minidlna - Works with C650, D6500 and HT-C5xxx series.
 +
* Plex - Works on C650 and HT-C5xxx Series.[http://wiki.samygo.tv/index.php5/Samsung_Apps_widgets_list#Plex]
 +
* MythTV - Built-in UPnP server works with D6500 series (even DVB-S/DVB-S2 recordings can be streamed).
 +
 +
=== Mediatomb ===
 +
Use the latest (svn) version of mediatomb with compiled in ffmpeg support.
 +
 +
Add this to the server section of 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=01700000000000000000000000000000" />
 +
</custom-http-headers>
 +
 +
Configure mime types this way in section import/mappings/extension-mimetype:
 +
<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-msvideo"/>
 +
 +
Extend the protocol info in the server section.
 +
<protocolInfo extend="yes"/>
 +
 +
'''Add subtitles support:'''<br>
 +
<br>
 +
Use latest patch for mediatomb <br>
 +
http://sourceforge.net/tracker/?func=detail&aid=3014026&group_id=129766&atid=715782
 +
Tested (reported) from UExx5000.
 +
==Controlling Samsung TV adjustments==
 +
 +
Samsung TV’s (series D and probably series C) are equipped with some feature called Rendering Control Service. It is simply network protocol useful to control some parameters related to audio and video options (e.g. volume level, brightness etc).
 +
 +
Protocol is based on HTTP and XML technology. Requests are sent by TCP port 52235 and looks like:
 +
<pre>
 +
POST /upnp/control/RenderingControl1 HTTP/1.1
 +
Content-Type: text/xml; charset="utf-8
 +
SOAPACTION: "SoapAction:urn:schemas-upnp-org:service:RenderingControl:1#GetVolume"
 +
Cache-Control: no-cache
 +
Host: 192.168.1.102:52235
 +
Content-Length: 354
 +
Connection: Close
 +
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
 +
<s:Body>
 +
<ns0:GetVolume xmlns:ns0="urn:schemas-upnp-org:service:RenderingControl:1">
 +
<InstanceID>0</InstanceID>
 +
<Channel>Master</Channel>
 +
</ns0:GetVolume>
 +
</s:Body>
 +
</s:Envelope>
 +
</pre>
 +
SOAPACTION contains action name (GetVolume), rest of this string is constant. Host IP is, of course, our device address. Content-Length define payload data length (XML data). Rest of the headers above is rather self-explanatory.
 +
 +
Header lines are separated by two bytes CR+LF (carriage return 0x0D followed by new line symbol 0x0A). Between headers and payload there is one extra empty line – CR+LF+CR+LF.
 +
 +
XML data is almost entirely predefined constant. Only <ns0:Getvolume …>…</ns0:GetVolume> are customizable. GetVolume is action name and the subtags (InstanceID, Channel) are parameters with determined values. List of all valid actions, values and parameters are covered in http://upnp.org/specs/av/UPnP-av-RenderingControl-v1-Service.pdf, but not all described functions are working on real TV.
 +
TV response  will be similar to request:
 +
<pre>
 +
HTTP/1.1 200 OK
 +
CONTENT-LENGTH: 289
 +
CONTENT-TYPE: text/xml; charset="utf-8"
 +
DATE: Thu, 01 Jan 1970 03:25:13 GMT
 +
EXT:
 +
SERVER: Linux/9.0 UPnP/1.0 PROTOTYPE/1.0
 +
 +
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding
 +
/"><s:Body><u:GetVolumeResponse xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1"><CurrentVolume>6</CurrentVolume>
 +
</u:GetVolumeResponse></s:Body></s:Envelope>
 +
</pre>
 +
We can of course set up parameters too. E.g. it is possible to set volume:
 +
<pre>
 +
POST /upnp/control/RenderingControl1 HTTP/1.1
 +
Content-Type: text/xml; charset="utf-8
 +
SOAPACTION: "SoapAction:urn:schemas-upnp-org:service:RenderingControl:1#SetVolume"
 +
Cache-Control: no-cache
 +
Host: 192.168.1.102:52235
 +
Content-Length: 389
 +
Connection: Close
 +
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
 +
<s:Body>
 +
<ns0:SetVolume xmlns:ns0="urn:schemas-upnp-org:service:RenderingControl:1">
 +
<InstanceID>0</InstanceID>
 +
<Channel>Master</Channel>
 +
<InstanceID>0</InstanceID>
 +
<DesiredVolume>69</DesiredVolume>
 +
</ns0:SetVolume>
 +
</s:Body>
 +
</s:Envelope>
 +
</pre>
 +
 +
[http://sc0ty.pl/2012/02/controlling-samsung-tv-adjustments/ Original article] by sc0ty.pl

Latest revision as of 13:27, 21 January 2013

These Samsung TVs are capable of playing serveral audio, video and image formats. These media contents can be played from an USB mass storage device (pendrive, USB hard disk), or from a DLNA network server. With firmware modifications it is possible to add support for media play over NFS or SMB/CIFS. This page tries to give detailed info about the playable formats, (the offical list does not go into details and also states that even with a supported media format not all content can be played) and also tries to outline the limitations of playing media content through DLNA using different DLNA servers.

Supported formats

Below is a table of the (more or less officially) supported media formats for USB playing (DLNA support may be different):

File Extension Container Video Decoder Audio Codec Resolution Frame/sec Mbit/sec
*.avi
AVI Divx 3.11 MP3
AC3
LPCM
ADPCM
(MULAW ALAW)
800x600 6 ~ 30 8
Divx 4.x 800x600 6 ~ 30 8
Divx 5.1 800x600 6 ~ 30 8
Divx 6.0 800x600 6 ~ 30 20
XviD 1920x1080 6 ~ 30 20
H.264 BP 1920x1080 6 ~ 30 25
H.264 MP 1920x1080 6 ~ 30 25
H.264 HP 1920x1080 6 ~ 30 25
MPEG-4 SP 800x600 6 ~ 30 8
MPEG-4 ASP 800x600 6 ~ 30 8
Motion JPEG 800x600 6 ~ 30 8
*.mkv MKV Divx 3.11 MP3
AC3
LPCM
ADPCM
(MULAW ALAW)
800x600 6 ~ 30 8
Divx 4.x 800x600 6 ~ 30 8
Divx 5.1 800x600 6 ~ 30 8
Divx 6.0 800x600 6 ~ 30 20
XviD 1920x1080 6 ~ 30 20
H.264 BP 1920x1080 6 ~ 30 25
H.264 MP 1920x1080 6 ~ 30 25
H.264 HP 1920x1080 6 ~ 30 8
MPEG-4 SP 800x600 6 ~ 30 8
MPEG-4 ASP 800x600 6 ~ 30 8
Motion JPEG 800x600 6 ~ 30 8
*.asf ASF Divx 3.11 WMA
MP3
AC3
LPCM
ADPCM
(MULAW ALAW), AAC
800x600 6 ~ 30 8
Divx 4.x 800x600 6 ~ 30 8
Divx 5.1 800x600 6 ~ 30 8
Divx 6.0 800x600 6 ~ 30 20
XviD 1920x1080 6 ~ 30 20
H.264 BP 1920x1080 6 ~ 30 25
H.264 MP 1920x1080 6 ~ 30 25
H.264 HP 1920x1080 6 ~ 30 25
MPEG-4 SP 800x600 6 ~ 30 8
MPEG-4 ASP 800x600 6 ~ 30 8
wmv(VC1) Window Media Video v9 1920x1080 6 ~ 30 25
*.mp4 MP4(SMP4) H.264 BP ADPCM
(HE)-AAC
MP3
1920x1080 6 ~ 30 25
H.264 MP 1920x1080 6 ~ 30 25
H.264 HP 1920x1080 6 ~ 30 25
MPEG-4 SP 800x600 6 ~ 30 8
MPEG-4 ASP 800x600 6 ~ 30 8
XviD 1920x1080 6 ~ 30 20
*.3gp 3GPP H.264 BP ADPCM
(HE)-AAC
1920x1080 6 ~ 30 25
H.264 MP 1920x1080 6 ~ 30 25
H.264 HP 1920x1080 6 ~ 30 25
MPEG-4 SP 800x600 6 ~ 30 8
MPEG-4 ASP 800x600 6 ~ 30 8
*.vro(ps) VRO
VOB
MPEG2 AC3, MPEG
LPCM
1920x1080 6 ~ 30 40
MPEG1 1920x1080 6 ~ 30 40
*.mpg
*.mpeg(ps)

MPEG1 (Program Stream) AC3, MPEG
LPCM
1920x1080 6 ~ 30 40
MPEG2 (Program Stream) 1920x1080 6 ~ 30 40
others(ts)
MPEG2(Transport Stream) AAC, HE-AAC
MP3
DD+
1920x1080 6 ~ 30 25
H.264 HP (Transport Stream) 1920x1080 6 ~ 30 40
VC1 (Transport Stream) 1920x1080 6 ~ 30 25


Unsupported formats

There are some audio codecs (apart from the exotic propriatery ones) that are unfortunately not supported. These are:

  • DTS
  • AMR
  • OGG
  • ALAC

The TV also known to have limitations for H.264 (e.g. MKV playing), the number of supported Reference Frames in the H.264 encoded content is limited. Some say that at most 9 reference frames are supported, however I personally experienced problems (Unsupported video format error, or instant TV poweroff) with 1920x1080 H.264 video with 8 reference frames.

DLNA

DLNA media play has stricter limitations than USB media play. This is significant reason for the firmware modifications to use NFS or SMB/CIFS (which should have the same limitations as USB media play). These limitations of DLNA include the following:

  • You can't use features like FWD, RWD, PAUSE with some DLNA servers, and even with the Samsung PC Share Manager, sometimes (depending on media type and file size) some of these functions are not available.
  • With some DLNA servers, some codecs are not supported when using DLNA but work fine via USB/NFS.
  • You can't select the audio channel of a multi-language media file with DLNA playback.

Beside the Samsung software (Samsung PC Share Manager), you can also use the open source DLNA servers like uShare or Mediathomb. These can also be used on Mac OS X or Linux. On OSX, they're hard to install because you need to compile them by yourself. Out of the box, none of the media servers below (other than Samsung PC Share Manager) work 100% well. Below are tested programs with comments on current problems, maybe someone can provide some resolutions, and maybe it will help somebody.

Windows XP:

  • Samsung PC Share Manager - Subtitles OK, all ok.
  • Tversity Media Server - Unsupported file format on every video file, tried transcoding and etc combinations.
  • FUPPES - Unsupported file format on every video file.
  • TwonkyMedia - DIvX works, rest (including mkv) - Unsupported file format
  • PlayOn + with plugin "LocalFiles" - randomly drops out from video, sometimes jamming.
  • Mezzmo - Unsupported file format on every video file.
  • CyberLinkMediaServer - no subtitles, no pausing, beside this everything works
  • Asset - only audio
  • Wild Media Server - (reported to work fine)

Linux:

  • Mediatomb - By default, unsupported file format on every video file. However it can be configured to support every file the PC Share Manager supports (even with FF, PAUSE and REWIND support where the PC Share Manager would support it), except the subtitles.
  • uShare - Unsupported file format on every video file
  • minidlna - Works with C650, D6500 and HT-C5xxx series.
  • Plex - Works on C650 and HT-C5xxx Series.[1]
  • MythTV - Built-in UPnP server works with D6500 series (even DVB-S/DVB-S2 recordings can be streamed).

Mediatomb

Use the latest (svn) version of mediatomb with compiled in ffmpeg support.

Add this to the server section of 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=01700000000000000000000000000000" />
</custom-http-headers>

Configure mime types this way in section import/mappings/extension-mimetype:

<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-msvideo"/>

Extend the protocol info in the server section.

<protocolInfo extend="yes"/>

Add subtitles support:

Use latest patch for mediatomb

http://sourceforge.net/tracker/?func=detail&aid=3014026&group_id=129766&atid=715782

Tested (reported) from UExx5000.

Controlling Samsung TV adjustments

Samsung TV’s (series D and probably series C) are equipped with some feature called Rendering Control Service. It is simply network protocol useful to control some parameters related to audio and video options (e.g. volume level, brightness etc).

Protocol is based on HTTP and XML technology. Requests are sent by TCP port 52235 and looks like:

 POST /upnp/control/RenderingControl1 HTTP/1.1
 Content-Type: text/xml; charset="utf-8
 SOAPACTION: "SoapAction:urn:schemas-upnp-org:service:RenderingControl:1#GetVolume"
 Cache-Control: no-cache
 Host: 192.168.1.102:52235
 Content-Length: 354
 Connection: Close
 
 <?xml version="1.0" encoding="utf-8"?>
 <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
 <s:Body>
 <ns0:GetVolume xmlns:ns0="urn:schemas-upnp-org:service:RenderingControl:1">
 <InstanceID>0</InstanceID>
 <Channel>Master</Channel>
 </ns0:GetVolume>
 </s:Body>
 </s:Envelope>

SOAPACTION contains action name (GetVolume), rest of this string is constant. Host IP is, of course, our device address. Content-Length define payload data length (XML data). Rest of the headers above is rather self-explanatory.

Header lines are separated by two bytes CR+LF (carriage return 0x0D followed by new line symbol 0x0A). Between headers and payload there is one extra empty line – CR+LF+CR+LF.

XML data is almost entirely predefined constant. Only <ns0:Getvolume …>…</ns0:GetVolume> are customizable. GetVolume is action name and the subtags (InstanceID, Channel) are parameters with determined values. List of all valid actions, values and parameters are covered in http://upnp.org/specs/av/UPnP-av-RenderingControl-v1-Service.pdf, but not all described functions are working on real TV. TV response will be similar to request:

 HTTP/1.1 200 OK
 CONTENT-LENGTH: 289
 CONTENT-TYPE: text/xml; charset="utf-8"
 DATE: Thu, 01 Jan 1970 03:25:13 GMT
 EXT:
 SERVER: Linux/9.0 UPnP/1.0 PROTOTYPE/1.0
 
 <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding
 /"><s:Body><u:GetVolumeResponse xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1"><CurrentVolume>6</CurrentVolume>
 </u:GetVolumeResponse></s:Body></s:Envelope>

We can of course set up parameters too. E.g. it is possible to set volume:

 POST /upnp/control/RenderingControl1 HTTP/1.1
 Content-Type: text/xml; charset="utf-8
 SOAPACTION: "SoapAction:urn:schemas-upnp-org:service:RenderingControl:1#SetVolume"
 Cache-Control: no-cache
 Host: 192.168.1.102:52235
 Content-Length: 389
 Connection: Close
 
 <?xml version="1.0" encoding="utf-8"?>
 <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
 <s:Body>
 <ns0:SetVolume xmlns:ns0="urn:schemas-upnp-org:service:RenderingControl:1">
 <InstanceID>0</InstanceID>
 <Channel>Master</Channel>
 <InstanceID>0</InstanceID>
 <DesiredVolume>69</DesiredVolume>
 </ns0:SetVolume>
 </s:Body>
 </s:Envelope>

Original article by sc0ty.pl