使用铂库实现 c++ DLNA 字幕显示

c++ DLNA subtitle display implementation with platinium library

本文关键字:DLNA 字幕 显示 c++ 实现      更新时间:2023-10-16

谁能解释一下,在不转码视频文件的情况下播放媒体文件(视频(时,是否有可用的外部字幕(.srt文件(的DLNA标准通行证信息。

如果可能的话,谁能告诉我DLNA标准中在哪里解释了这一点?或者如何实现?

我正在尝试使用铂库实现这一点,但不知道如何做,或者这是否可能。

谢谢

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

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

添加新字段更加棘手,PLT_Didl有一组固定的字段,您必须与PLT_MediaObject::ToDidl一起扩展,这在其操作中非常固定。我认为Platinum的这一部分有点仓促,与框架其余部分的可见设计工作相比。

无论如何,您的DMS还必须准备好充当字幕的HTTP服务器,这意味着将权力交给您拥有的任何类作为PLT_MediaServerDelegate::ProcessFileRequest的实现。