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

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

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

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

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

以下は、REGZAからのリクエストにmediatombが応答したXMLの情報です。
{code}
<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=”1280×720″ 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>
{/code}

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)の設定を行ったのですが、シークの動作以前に、動画が視聴できなくなりました。
{code}<mimetype>video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=01;DLNA.ORG_CI=0</mimetype>{/code}

data-ad-format="auto"> data-ad-format="auto">

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

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

ただし、”duration”の属性が出力されていたので、以下のようにTimeベースシーク(DLNA.ORG_OP=10)の属性に変更して試してみました。
{code}<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>
{/code}

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

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

img_5651

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

“DLNA.ORG_OP”がダブって出力されていますが、最初の設定が有効になるようです。
{code}
<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=”1280×720″ 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>
{/code}

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

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

コメントを残す

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

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