Resume video playback on Samsung TVs
That's about the only thing Samsung's DLNA server 'solution' does right. And a feature I wouldn't like to miss and which - unfortunately - keeps me stuck in Samsung's magic world of software development.
zip wrote:Does this wotk on your B series with the Samsung's software? I cannot reproduce this. What is 'D' button?
What we found is this: The TV is not doing a fast forward (in terms of a faster playing video. When you press the ff or rew button on the remote, the TV is just jumping to a different position in the stream. To calculate the offset for the jump, the TV seems to use the playtime of the video file. Twonky currently does not support extracting the playtime from mkv files. To get FF working on the Samsung TVs, we would need to enhance our mkv file scanner.
romke wrote:What we found is this: The TV is not doing a fast forward (in terms of a faster playing video. When you press the ff or rew button on the remote, the TV is just jumping to a different position in the stream. To calculate the offset for the jump, the TV seems to use the playtime of the video file. Twonky currently does not support extracting the playtime from mkv files. To get FF working on the Samsung TVs, we would need to enhance our mkv file scanner.
Last point is resume video playback.
Thank you very much for your great work!
Bye
jgdsm wrote:It should transparently work with any DLNA server though since the TV/client is responsible for storing last positions and telling the the server to deliver starting from either 0:00:00:00 or somewhere else.
POST /upnp/control/ContentDirectory1 HTTP/1.0
HOST: 192.168.100.100:52235
CONTENT-LENGTH: 339
CONTENT-TYPE: text/xml;charset="utf-8"
USER-AGENT: DLNADOC/1.50
SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#X_SetBookmark"
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:X_SetBookmark xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1"><ObjectID>46</ObjectID><PosSecond>58</PosSecond><CategoryType>10</CategoryType><RID>0</RID></u:X_SetBookmark></s:Body></s:Envelope>
<?xml version="1.0" encoding="utf-8" ?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><u:BrowseResponse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1"><Result><?xml version="1.0" encoding="UTF-8" standalone="no"?><DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:sec="http://www.sec.co.kr/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/"><item id="V_F#FOL_R10$F137$MI1062" parentID="V_F#FOL_R10$F137" restricted="1"><dc:title>Bourne_Identity.mp4</dc:title><upnp:class>object.item.videoItem</upnp:class><dc:date>2002-06-14</dc:date><upnp:genre>Action</upnp:genre><res bitrate="593000" duration="1:58:17.000" protocolInfo="http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000" resolution="1920x1080" size="4209226587">http://192.168.100.100:8895/resource/1062/MEDIA_ITEM/AVC_MP4_MP_HD_1080i_AAC</res><res protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00D00000000000000000000000000000" resolution="106x160">http://192.168.100.100:8895/resource/1034/COVER_IMAGE</res><res protocolInfo="http-get:*:smi/caption:*">http://192.168.100.100:8895/resource/1062/SUBTITLE.srt</res><sec:CaptionInfoEx sec:type="srt">http://192.168.100.100:8895/resource/1062/SUBTITLE.srt</sec:CaptionInfoEx></item></DIDL-Lite></Result><NumberReturned>1</NumberReturned><TotalMatches>1</TotalMatches><UpdateID>2</UpdateID></u:BrowseResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:BrowseResponse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1"><Result><DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp='urn:schemas-upnp-org:metadata-1-0/upnp/' xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:sec="http://www.sec.co.kr/"><item id="46" parentID="12" restricted="1"><dc:title>Bourne_Identity</dc:title>
<upnp:class>object.item.videoItem</upnp:class>
<sec:dcmInfo>CREATIONDATE=0,FOLDER=The Bourne Identity,BM=58</sec:dcmInfo>
<dc:date>2010-07-11</dc:date>
<sec:CaptionInfoEx sec:type="srt">http://192.168.100.100:53235/46.SRT</sec:CaptionInfoEx>
<sec:MetaFileInfo sec:type="mta">http://192.168.100.100:53235/46.MTA</sec:MetaFileInfo>
<res protocolInfo="http-get:*:video/mp4:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000" size="4209226587" resolution="1920x1080" duration="1:58:17">http://192.168.100.100:53235/46.MP4</res>
<res protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00D00000000000000000000000000000">http://192.168.100.100:53235/46.MTN</res>
</item>
</DIDL-Lite></Result><NumberReturned>1</NumberReturned><TotalMatches>1</TotalMatches><UpdateID>0</UpdateID></u:BrowseResponse></s:Body></s:Envelope>
protected void storeItemFields(Node itemNode, DirectoryObject object)
{
super.storeItemFields(itemNode, object);
Document document = itemNode.getOwnerDocument();
if (document == null)
{
document = (Document)itemNode;
}
Node dcmInfo = document.createElement("sec:dcmInfo");
dcmInfo.setTextContent("CREATIONDATE=0,FOLDER=" + object.getTitle() + ",BM=100");
itemNode.appendChild(dcmInfo);
Node subtitlesNode = storeNode(itemNode, object, ClassProperties.SUBTITLES_URL, "sec:CaptionInfoEx", false);
storeStaticAttribute(subtitlesNode, "sec:type", "http://www.sec.co.kr/", "srt");
}
dalanik wrote:so fast forwarding to the middle of the film takes forever...D.
sefo wrote:zip thanks.
FYI. I made the following ugly patch in SamsungDLNAMessageBuilder.java file to test it, and it worked. Every video has the bookmark at position of 100 seconds.
- Code:
protected void storeItemFields(Node itemNode, DirectoryObject object)
{
super.storeItemFields(itemNode, object);
Document document = itemNode.getOwnerDocument();
if (document == null)
{
document = (Document)itemNode;
}
Node dcmInfo = document.createElement("sec:dcmInfo");
dcmInfo.setTextContent("CREATIONDATE=0,FOLDER=" + object.getTitle() + ",BM=100");
itemNode.appendChild(dcmInfo);
Node subtitlesNode = storeNode(itemNode, object, ClassProperties.SUBTITLES_URL, "sec:CaptionInfoEx", false);
storeStaticAttribute(subtitlesNode, "sec:type", "http://www.sec.co.kr/", "srt");
}
Users browsing this forum: No registered users and 41 guests