0

プラチナ ライブラリを使用して、DMR -LG SmartTV に字幕情報を提供できるシンプルな DMS を実装しようとしています。

私はすでに DMR でビデオをレンダリングすることに成功しており、DMR がビデオ ファイルに関連付けられた字幕の情報を受け取る場所をすでに見つけています。

DMR からのサンプル リクエスト:

    POST /upnp/services/ContentDirectory/control HTTP/1.1
HOST: 192.168.1.3:54444
CONTENT-LENGTH: 735
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"
USER-AGENT: Linux/2.6.39.4.ps-110224-lg1152 UPnP/1.0 DLNADOC/1.50 INTEL_NMPR/2.0 LGE_DLNA_SDK/1.6.0

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <s:Body>
    <u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
      <ObjectID>ea06</ObjectID>
      <BrowseFlag>BrowseDirectChildren</BrowseFlag>
      <Filter>@id,@parentID,@restricted,@childCount,dc:title,dc:creator,upnp:artist,upnp:class,dc:date,upnp:album,upnp:genre,res,res@size,res@duration,res@protection,res@bitrate,res@resolution,res@protocolInfo,res@nrAudioChannels,res@sampleFrequency,upnp:albumArtURI,upnp:albumArtURI@dlna:profileID, res@dlna:cleartextSize</Filter>
      <StartingIndex>0</StartingIndex>
      <RequestedCount>24</RequestedCount>
      <SortCriteria></SortCriteria>
    </u:Browse>
  </s:Body>
</s:Envelope>

現在、字幕表示をサポートする有効な DMS からの応答は次のとおりです。

HTTP/1.1 200 OK
SERVER: WINDOWS/5.1 UPnP/1.0 DLNADOC/1.50 Nero-MediaHome/4.5.20.145
CONTENT-TYPE: text/xml; charset=utf-8
EXT:
DATE: Mon, 14 Jan 2013 22:12:35 GMT
TRANSFER-ENCODING: chunked
CONNECTION: Keep-Alive
...
          <item id="ea13" parentID="ea06" restricted="1">
            <dc:date>2012-10-25</dc:date>
            <dc:title>video.avi</dc:title>
            <upnp:album>Filmes</upnp:album>
            <upnp:class>object.item.videoItem.movie</upnp:class>
            <res 
              bitrate="257570" duration="1:37:32" nrAudioChannels="6" 
              protocolInfo="http-get:*:video/avi:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000" 
              resolution="720x304" sampleFrequency="48000" size="1507196928">http://192.168.1.3:54444/server/80402875-CA74-4CCE-B7E0-D81CEF1913A2/D5E59F25/ea13?unknown-id</res>
            <res protocolInfo="http-get:*:text/srt:*">http://192.168.1.3:54444/server/80402875-CA74-4CCE-B7E0-D81CEF1913A2/3A2C7131/ea13?sub=video.srt</res>
          </item>

今、私はカスタム DMS で同じことを実装しようとしています。誰かが私を正しい方向に向けたり、res 要素に保存されている字幕情報を実装するサンプルを次のように表示したりできます: srt_URL (応答のコンテンツ タイプは text/srt)

ありがとう

4

1 に答える 1

2

Platinum で SRT リソース タグを UPnP アイテムに追加するには、少なくとも次の手順を実行する必要があります。リストが機能している、完全である、またはテスト済みであるとは主張しません。何を変更する必要があるかについての私の最善の推測です。すぐに期待どおりに機能しない場合は、具体的なお手伝いができない場合があります。これはナビゲーションのヒントであり、運転支援ではありません

  • SRT ファイルをメディア ファイルと同じフォルダに配置し、後から簡単に区別できるような適切な方法で同じ名前を付けます。
  • PltMimeType.cppでに追加"srt","text/srt"PLT_HttpFileRequestHandler_DefaultFileTypeMapます。プラチナは、箱から出してすぐに SRT を知りません。
  • PltFileMediaServer.cppはちょっとばかげています。デフォルトでは、ディレクトリで見つかったすべてのファイルが表示されます。あくまでも例です。フィルタを実装して、表示されているリストから SRT を除外する必要がありPltFileMediaServer::ProcessFileます。
  • まだPltFileMediaServer.cppにはメソッドがありPLT_FileMediaServerDelegate::BuildFromFilePathます。これがfilepathメディアファイルのパスです(そしてそれだけです)。ファイルパスから、適切な名前の字幕ファイルがあるかどうかをフォルダーで調べる必要があります (いくつかのNPT_File方法で、それを調べます)。
  • ある場合は、に追加する必要がありPLT_MediaItemResourceますPLT_MediaObject* object。すでに 1 つresourceのインスタンスがありますが、それはメディア リソース自体専用に使用されています。再利用しないでください。別のものを追加する必要があり、IMO のみを設定する必要がありますresource.m_Uri(BuildResourceUri を使用) とresource.m_ProtocolInfo.
  • の場合、新しく追加した のが DLNA プロファイル ID で上書きされないように、パラメーターを指定m_ProtocolInfoして呼び出す必要があります。PLT_ProtocolInfo::GetProtocolInfofalseprotocolInfo<res>
于 2013-01-16T16:34:28.957 に答える