Может кто-нибудь объяснить мне, если это возможно для стандартного DLNA передать информацию о доступных внешних субтитрах (файлы .srt) при воспроизведении медиа-файлов (видео) без транскодирования видеофайла.
Если это возможно, может кто-нибудь показать мне, где это объясняется в стандарте DLNA? или как это можно реализовать?
Я пытаюсь реализовать это с помощью библиотеки платины и не знаю, как это сделать или если это возможно.
Спасибо
Возможный? Да. Стандартизированный? Нет. Надежно? Точно нет. Там нет спецификации, как правильно делать субтитры, ни в UPnP, ни в DLNA. В конечном счете, это вопрос того, как DMR хочет, чтобы субтитры обслуживались DMS, поэтому это в значительной степени зависит от конкретного DMR, который вы хотите использовать. Некоторые DMR требуют отдельного нестандартного поля DIDL-Lite в описании мультимедиа (телевизоры Samsung, кажется, <sec:CaptionInfoEx>
), некоторые DMR довольны чем-то вроде стандарта <res protocolInfo="http-get:*:text/srt:*">
, Конечно, оба случая содержат URL-адрес вашего файла SRT. Вполне возможно, что ваш DMR вообще не поддерживает субтитры. Нет такого требования ни в UPnP, ни в DLNA (я уже говорил это?).
Таким образом, Platinum не имеет поддержки субтитров из коробки. Вы можете создать <res>
тег с существующей логикой — настройка PLT_ProtocolInfo
с ContentType text / srt и назначением PLT_MediaItemResource
с m_Uri
вашего файла SRT (обслуживается вашей DMS).
Добавление нового поля более сложно, PLT_Didl
имеет фиксированный набор полей, которые вы должны расширить вместе с PLT_MediaObject::ToDidl
который довольно исправлен в своей работе. Я считаю, что эта часть Platinum несколько поторопилась по сравнению с видимыми усилиями по проектированию, приложенными к остальной части платформы.
В любом случае, ваша DMS также должна быть готова выступать в качестве HTTP-сервера для ваших субтитров, что означает предоставление возможности любому классу, который у вас есть, в качестве реализации PLT_MediaServerDelegate::ProcessFileRequest
,
Других решений пока нет …