我尝试使用普通的图书馆实现一个简单的DMS,它可以为DMR -LG SmartTV提供字幕信息。
我已经成功在DMR上呈现视频,我已经找到了DMR接收与视频文件相关联的字幕信息的位置。
来自DMR的样本请求:
POST /upnp/services/ContentDirectory/control HTTP/1.1
HOST: 192.168.1.3:54444
CONTENT-LENGTH: 735
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"
USER-AGENT: Linux/2.6.39.4.ps-110224-lg1152 UPnP/1.0 DLNADOC/1.50 INTEL_NMPR/2.0 LGE_DLNA_SDK/1.6.0
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
<ObjectID>ea06</ObjectID>
<BrowseFlag>BrowseDirectChildren</BrowseFlag>
<Filter>@id,@parentID,@restricted,@childCount,dc:title,dc:creator,upnp:artist,upnp:class,dc:date,upnp:album,upnp:genre,res,res@size,res@duration,res@protection,res@bitrate,res@resolution,res@protocolInfo,res@nrAudioChannels,res@sampleFrequency,upnp:albumArtURI,upnp:albumArtURI@dlna:profileID, res@dlna:cleartextSize</Filter>
<StartingIndex>0</StartingIndex>
<RequestedCount>24</RequestedCount>
<SortCriteria></SortCriteria>
</u:Browse>
</s:Body>
</s:Envelope>
现在来自支持字幕显示的有效DMS的响应是:
HTTP/1.1 200 OK
SERVER: WINDOWS/5.1 UPnP/1.0 DLNADOC/1.50 Nero-MediaHome/4.5.20.145
CONTENT-TYPE: text/xml; charset=utf-8
EXT:
DATE: Mon, 14 Jan 2013 22:12:35 GMT
TRANSFER-ENCODING: chunked
CONNECTION: Keep-Alive
...
<item id="ea13" parentID="ea06" restricted="1">
<dc:date>2012-10-25</dc:date>
<dc:title>video.avi</dc:title>
<upnp:album>Filmes</upnp:album>
<upnp:class>object.item.videoItem.movie</upnp:class>
<res
bitrate="257570" duration="1:37:32" nrAudioChannels="6"
protocolInfo="http-get:*:video/avi:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000"
resolution="720x304" sampleFrequency="48000" size="1507196928">http://192.168.1.3:54444/server/80402875-CA74-4CCE-B7E0-D81CEF1913A2/D5E59F25/ea13?unknown-id</res>
<res protocolInfo="http-get:*:text/srt:*">http://192.168.1.3:54444/server/80402875-CA74-4CCE-B7E0-D81CEF1913A2/3A2C7131/ea13?sub=video.srt</res>
</item>
现在我试图在我的自定义DMS中实现相同的功能,任何人都可以指向正确的方向或显示任何实现res元素中存储的字幕信息的样本:srt_URL(响应的内容类型是文本/ SRT)
由于
答案 0 :(得分:2)
要将SRT资源标记添加到Platinum中的UPnP项目,您至少应该执行以下操作。我并未声明该列表具有功能,完整或经过测试。这是我最需要改变的猜测。如果它没有按预期立即工作,我可能无法更具体地帮助您。 这是一个导航提示,而非驾驶辅助。
"srt","text/srt"
添加到PLT_HttpFileRequestHandler_DefaultFileTypeMap
。 Platinum不知道开箱即用的SRT。PltFileMediaServer::ProcessFile
过滤器来过滤掉可见列表中的SRT。PLT_FileMediaServerDelegate::BuildFromFilePath
。这里是filepath
,它是媒体文件的路径(仅限于此)。在文件路径之外,您需要查看文件夹中是否有正确命名的字幕文件(使用一些NPT_File
方法,查找它)。PLT_MediaItemResource
添加额外的PLT_MediaObject* object
。已有一个resource
实例,但它专门用于媒体资源本身。不要重复使用它。您需要添加另一个,IMO只需要设置resource.m_Uri
(使用BuildResourceUri)和resource.m_ProtocolInfo
。m_ProtocolInfo
,您需要使用参数PLT_ProtocolInfo::GetProtocolInfo
致电false
,以便新添加的protocolInfo
的{{1}}不会被DLNA个人资料ID破坏