mediatombで、トランスコードを有効にして動画を視聴するとREGZAにシークバーが表示されず、早送りや巻き戻しができません。
プログラムソースを確認してみましたが、mediatombのトランスコードを有効にするとシーク(早送りや巻き戻し)やポーズ(一時停止)を出来なくしているようです。
以下は、”MP4″(AVC/AAC)の動画を、”MPEG2″にトランスコードしながらREGZAから視聴しています。REGZA Z9000では右下にシークバーが表示されますが、トランスコードを有効にして動画を視聴すると、シークバーが表示されません。
Wiresharkで、REGZAとmediatombの通信パケットを監視してみました。
以下は、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}
パケットを監視してわかったのが、トランスコードを有効にすると”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}
そして、動画を視聴してみると・・・、
“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) シークバーが表示されるので、動画のトータル時間と、現在の再生時間が確認できるようになります。