【问题标题】:c++ DLNA subtitle display implementation with platinium libraryc++ DLNA字幕显示实现与platinium库
【发布时间】:2013-01-13 17:03:04
【问题描述】:

在不转码视频文件的情况下播放媒体文件(视频)时,是否有可能获得可用外部字幕(.srt 文件)的 DLNA 标准传递信息。

如果可能的话,谁能告诉我这在 DLNA 标准中的解释是什么?或者如何实现?

我正在尝试使用 platinium 库来实现这一点,但不知道该怎么做,也不知道这是否可行。

谢谢

【问题讨论】:

    标签: c++ subtitle dlna


    【解决方案1】:

    可能吗?是的。标准化?不,可靠吗?绝对不。在 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 实现的任何类。

    【讨论】:

    • 感谢 Pavel 的回答,我还没有标记为正确,因为我想看看是否有人说得更多。在我看来,您对图书馆非常了解,您能否指出您在说什么的任何源示例,目标 DMR 是 LG 智能电视,您知道它是请求 srt 文件的请求吗?你也有这样的例子吗? (如果没有示例,您能否为我指出正确的文档来完成此操作?)
    • 我不知道哪一种适用于您的电视机。我建议您尽可能多地尝试第 3 方 DMS,当您找到一个可以正确显示字幕的第三方 DMS 时,请使用 Wireshark 查看协议。 Naming your subtitle file in a specific way might help.
    • 一旦您找到方法,我可能会帮助您完成,但请针对代码的具体更改提出具体问题。有关如何使用 Platinum 进行 DMS 的通用示例,请查看源代码中的示例,/Devices/MediaServer/PltFileMediaServer 和 /Tests/FileMediaServer。
    猜你喜欢
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    相关资源
    最近更新 更多