2013-01-13 36 views
1

任何人都可以解释我是否有可能的DLNA标准传递信息的可用外部字幕(.srt文件)时播放媒体文件(视频)没有转码视频文件。C++ DLNA字幕显示实现与platinium库

如果有可能,那么任何人都可以告诉我,这是在DLNA标准解释?或者如何实施?

我想使用platinium库实现这一点,不知道如何去做,或者如果这是可能的。

谢谢

回答

3

可能吗?是。标准的吗?没有可靠?绝对不。没有关于如何在UPnP或DLNA中进行字幕的规范。它最终是DMR如何让DMS提供字幕的问题,因此它很大程度上取决于您要使用的特定DMR。一些DMR在媒体描述中需要特定的非标准DIDL-Lite字段(三星电视似乎在推广<sec:CaptionInfoEx>),一些DMR对标准类型<res protocolInfo="http-get:*:text/srt:*">感到满意。当然,这两种情况都包含了SRT文件的URL。您的DMR可能完全有可能根本不支持字幕。 UPnP或DLNA都没有这样的要求(我已经说过了吗?)。

So Platinum没有任何开箱即用的字幕支持。您可以使用现有逻辑创建<res>标记 - 设置PLT_ProtocolInfo,其ContentType为text/srt,并将PLT_MediaItemResource分配给您的SRT文件(由DMS提供)的m_Uri

添加一个新字段比较棘手,PLT_Didl有一个固定的字段集合,您必须将其与PLT_MediaObject::ToDidl一起扩展,这在操作中相当固定。相比于框架其余部分的可见设计工作,我认为铂金的这一部分有点匆忙。

在任何情况下,您的DMS也必须准备好作为您的字幕的HTTP服务器,这意味着您可以为执行PLT_MediaServerDelegate::ProcessFileRequest的任何类别授予权力。

+0

感谢Pavel为您的答案,我还没有标记为正确的,因为我想看看有没有人说更多。在我看来,你认识这个图书馆很好,你能指点我的任何源代码,你说的是什么,目标DMR是LG智能电视,你知道女巫是请求srt文件的请求吗?你也有这样的例子吗? (如果没有例子,您可以指出我需要正确的文档来完成此操作吗?) – Nuno

+0

我不知道哪一个适用于您的电视机。我建议尝试尽可能多的第三方DMS,当你找到一个能够正确显示字幕的版本时,请使用Wireshark查看协议。 [以特定方式命名字幕文件可能有所帮助](http://forum.my.nero.com/index.php?showtopic=8350)。 –

+0

一旦你找到了方法,我可能能够帮助你通过,但请具体的代码变化的具体问题。有关如何使用Platinum执行DMS的一般示例,请查看源文件/ Devices/MediaServer/PltFileMediaServer和/ Tests/FileMediaServer中的示例。 –