DLNAサーバーを試す[MediaTomb]編 – トラスコ時にシークバーを表示する

mediatombで、トランスコードを有効にして動画を視聴するとREGZAにシークバーが表示されず、早送りや巻き戻しができません。

プログラムソースを確認してみましたが、mediatombのトランスコードを有効にするとシーク(早送りや巻き戻し)やポーズ(一時停止)を出来なくしているようです。

以下は、”MP4″(AVC/AAC)の動画を、”MPEG2″にトランスコードしながらREGZAから視聴しています。REGZA Z9000では右下にシークバーが表示されますが、トランスコードを有効にして動画を視聴すると、シークバーが表示されません。
img_5513

Wiresharkで、REGZAとmediatombの通信パケットを監視してみました。
mediatomb-bar-01

以下は、REGZAからのリクエストにmediatombが応答したXMLの情報です。

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <s:Body>
    <u:BrowseResponse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
      <Result>
        <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">
          <item id="8" parentID="7" restricted="1">
            <dc:title>300 - Trailer [HD].mp4</dc:title>
            <upnp:class>object.item.videoItem</upnp:class>
            <res duration="00:02:30.3" sampleFrequency="44100" nrAudioChannels="1" protocolInfo="http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;rate=44100;channels=1:DLNA.ORG_OP=00;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=012000000000000000000000000000000">http://192.168.11.7:49152/content/media/object_id/8/res_id/none/pr_name/ffmpeg-video/tr/1</res>
            <res protocolInfo="http-get:*:video/mp4:DLNA.ORG_OP=01;DLNA.ORG_CI=0" size="39973721" duration="00:02:30.3" bitrate="2126" sampleFrequency="44100" resolution="1280x720" nrAudioChannels="1">http://192.168.11.7:49152/content/media/object_id/8/res_id/0/ext/file.mp4</res>
          </item>
        </DIDL-Lite>
      </Result>
      <NumberReturned>1</NumberReturned>
      <TotalMatches>3</TotalMatches>
      <UpdateID>0</UpdateID>
    </u:BrowseResponse>
  </s:Body>
</s:Envelope>

resタグのprotocolinfo属性に設定してある、”DLNA.ORG_OP=00″はシーク(早送りや巻き戻し)ができないことを表しています。

“DLNA.ORG_OP”に設定する値

DLNA.ORG_OP=00 : シークなし
DLNA.ORG_OP=01 : Range(Size)ベースのシーク
DLNA.ORG_OP=10 : Timeベースのシーク
DLNA.ORG_OP=11 : Range(Size)ベースとTimeベースのシーク

前回、この情報を偽装するためmediatombのトランスコードプロファイルに以下のようなRange(Size)ベースシーク(DLNA.ORG_OP=01)の設定を行ったのですが、シークの動作以前に、動画が視聴できなくなりました。

Select Code
1
<mimetype>video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=01;DLNA.ORG_CI=0</mimetype>
data-ad-format="auto"> data-ad-format="auto">

パケットを監視してわかったのが、トランスコードを有効にすると”protocolinfo”属性に”size”が出力されません。

“DLNA.ORG_OP=01″はRange(Size)ベースシークの設定なので、”size”が出力されていないと上手く動作しないようです。(たぶん)トランスコードしながら配信しているので、コンテンツサイズは設定できないと思われます。

ただし、”duration”の属性が出力されていたので、以下のようにTimeベースシーク(DLNA.ORG_OP=10)の属性に変更して試してみました。

Select Code
1
2
3
4
5
6
7
<profile name="ffmpeg-video" enabled="yes" type="external">
  <mimetype>video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=10;DLNA.ORG_CI=0</mimetype>
  <accept-url>yes</accept-url>
  <first-resource>yes</first-resource>
  <agent command="/home/p182/.mediatomb/mediatomb-ffmpeg-video" arguments="%in %out"/>
  <buffer size="14400000" chunk-size="512000" fill-size="120000"/>
</profile>

そして、動画を視聴してみると・・・、

右下にシークバーが表示されました。ほほぉ。
img_5518

img_5651

再度、パケットを監視してみました。
mediatomb-bar-05

“DLNA.ORG_OP”がダブって出力されていますが、最初の設定が有効になるようです。

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <s:Body>
    <u:BrowseResponse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
      <Result>
        <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">
          <item id="20402" parentID="20401" restricted="1">
            <dc:title>300 - Trailer [HD].mp4</dc:title>
            <upnp:class>object.item.videoItem</upnp:class>
            <res duration="00:02:30.3" sampleFrequency="44100" nrAudioChannels="1" protocolInfo="http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=10;DLNA.ORG_CI=0;rate=44100;channels=1:DLNA.ORG_OP=00;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=012000000000000000000000000000000">http://192.168.11.5:49152/content/media/object_id/20402/res_id/none/pr_name/ffmpeg-video/tr/1</res>
            <res protocolInfo="http-get:*:video/mp4:DLNA.ORG_OP=01;DLNA.ORG_CI=0" size="39973721" duration="00:02:30.3" bitrate="2126" sampleFrequency="44100" resolution="1280x720" nrAudioChannels="1">http://192.168.11.5:49152/content/media/object_id/20402/res_id/0/ext/file.mp4</res>
          </item>
        </DIDL-Lite>
      </Result>
      <NumberReturned>1</NumberReturned>
      <TotalMatches>3</TotalMatches>
      <UpdateID>54</UpdateID>
    </u:BrowseResponse>
  </s:Body>
</s:Envelope>

さて、シークバーは表示できたのですが、早送りと巻き戻しはできません。

リモコンボタンを押すたびにシークバーの時間は移動してくれますが、動画はその都度、最初から再生されます。 :o) シークバーが表示されるので、動画のトータル時間と、現在の再生時間が確認できるようになります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

数字を入力してください。(CAPTCHA) * Time limit is exhausted. Please reload CAPTCHA.