おれおれDLNAサーバ
最後にcommitしたのが2016/9/10だったので、いじるの2年近くぶりかー。
ずーっとfoltia+PT2でTS録画、2018/01からはPT2をPT3に変えた。
これを観るのはBravia KDL-40ZX1で、ここに自家製DLNAサーバで配信。たまにKindleのVidON Player HDも使うけど、DLNAサーバは特にいじらなくても見えてた。
先日、REGZA 50Z810Xをお迎えしたので、こいつのメディアサーバからアクセスしてみると、「このコンテンツは再生できません」。。なにー。
というわけで、REGZAに対応してるというPMS for REGZAの通信を真似ながらいじって、ようやくうまくいった気がするのでメモ。
res@protocolInfo
30秒スキップ
Bravia
res@protocolInfoでDNLA.ORG_OP=11;DLNA.ORG_FLAGS=61100000000000000000000000000000 として、さらにHEAD/GETのgetcontentFeatures.dlna.org: 1 に応じてcontentFeatures.dlna.org: DLNA.ORG_PN=MPEG_TS_HD_60_L2_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=61100000000000000000000000000000 を返してやると、再生中に上キーが押せるようになる。
押すと、GETでTimeSeekRange.dlna.org: npt=30.773- みたいなのが飛んでくるので、これに合わせて30.773秒あたりからのデータを返してやればOK。
REGZA
Braviaと同じres@protocolInfoを返しても、TimeSeekRange.dlna.orgじゃなくRangeリクエストで来る。getcontentFeatures.dlna.org: 1は付いてない。まあこっちのほうが簡単なのでOK。
VidON
30秒スキップがないのでシークバーの適当なところをtapすると、GETアクセスは来るけどRangeの値がおかしい。その通りのデータを返すと、以降の再生が壊れる。
bitrateからbyte rangeの計算するとこがoverflowしてるんじゃないかなあ。TimeSeekでくればいいのに。