【发布时间】:2013-01-13 17:03:04
【问题描述】:
在不转码视频文件的情况下播放媒体文件(视频)时,是否有可能获得可用外部字幕(.srt 文件)的 DLNA 标准传递信息。
如果可能的话,谁能告诉我这在 DLNA 标准中的解释是什么?或者如何实现?
我正在尝试使用 platinium 库来实现这一点,但不知道该怎么做,也不知道这是否可行。
谢谢
【问题讨论】:
在不转码视频文件的情况下播放媒体文件(视频)时,是否有可能获得可用外部字幕(.srt 文件)的 DLNA 标准传递信息。
如果可能的话,谁能告诉我这在 DLNA 标准中的解释是什么?或者如何实现?
我正在尝试使用 platinium 库来实现这一点,但不知道该怎么做,也不知道这是否可行。
谢谢
【问题讨论】:
可能吗?是的。标准化?不,可靠吗?绝对不。在 UPnP 或 DLNA 中都没有关于如何正确制作字幕的规范。这最终是一个问题,即 DMR 如何希望 DMS 提供字幕,因此这在很大程度上取决于您要使用的特定 DMR。一些 DMR 需要在媒体描述中使用特定的非标准 DIDL-Lite 字段(三星电视似乎在宣传 <sec:CaptionInfoEx>),一些 DMR 对有点标准的 <res protocolInfo="http-get:*:text/srt:*"> 感到满意。当然,这两种情况都包含您的 SRT 文件的 URL。您的 DMR 完全有可能根本不支持字幕。 UPnP 或 DLNA 中都没有这样的要求(我已经说过了吗?)。
所以 Platinum 没有任何开箱即用的字幕支持。您可以使用现有逻辑创建 <res> 标记 - 将 PLT_ProtocolInfo 设置为 text/srt 的 ContentType 并将您的 SRT 文件(由您的 DMS 提供)的 m_Uri 分配给 PLT_MediaItemResource。
添加一个新字段比较棘手,PLT_Didl 有一组固定的字段,您必须与 PLT_MediaObject::ToDidl 一起扩展,这在其操作中是相当固定的。与框架其余部分的可见设计工作相比,我认为 Platinum 的这一部分有些仓促。
无论如何,您的 DMS 还必须准备好充当您的字幕的 HTTP 服务器,这意味着将权力赋予您作为 PLT_MediaServerDelegate::ProcessFileRequest 实现的任何类。
【讨论】: