TSをBRAVIA on miniDLNA

よく判らんタイトルだけど、HDUSで録画したTSを、ファイルそのままminiDLNAに食わせて、BRAVIA KDL-ZX1で視聴できたー。記念すべき?最初の番組はレールガンの最終回。涙で画面がよく見えません。
miniDLNAは、3/20のPM11時ころのCVS HEADに、Tracker:PatchesにあるFreeBSDパッチを当てたもの。依存関係でいろいろ必要なのものはPortsでつっこんだ。
patchが作成された時点のソースにはなかったのかもしれないが、playlist.oがリンク対象になってなくて、makeの最後にエラーになるので、Makefile.amの最後にplaylist.oを足さないとダメ。また、configureが、Portsで入れたffmpegやらのインストール先をうまくみつけてくれないので、ENVIRONMENT.freebsd-portsのような感じでCPPFLAGS/CFLAGS/LDFLAGSを環境変数で指定してやること。
minidlna.confを適当に編集。

media_dir=V,/home/foltia/php/tv
db_dir=/tmp/minidlna

これで実行すると、とりあえずBRAVIAからminiDLNAが見えるようになる。

$ ./minidlna -d -f ./minidlna.conf

。。。が、再生可能ファイルがないと言われる。どうも、miniDLNAが返しているファイルリストを見て、BRAVIAが再生不可と判断しているらしい。
あまりにad-hocだけどこんな感じに変更。どうせmedia_dirはfoltiaで録画したTSファイル(とサムネイルとワンセグMP4)しか入ってないフォルダなので。
metadata.cの756行目あたり

 asprintf(&m.dlna_pn, "MPEG_TS_%cD_JP_ISO;%s", res, dlna_no_conv);
→
 asprintf(&m.dlna_pn, "MPEG_TS_HD_60_L2_ISO;%s", dlna_no_conv);

upnpglovalvars.hの41行目あたり

 "http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_HD_NA_ISO;DLNA.ORG_OP=01;DLNA.ORG_CI=0," \
 "http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=01;DLNA.ORG_CI=0," \
→
 "http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_HD_60_L2_ISO;DLNA.ORG_OP=01;DLNA.ORG_CI=0," \
 "http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_HD_JP_ISO;DLNA.ORG_OP=01;DLNA.ORG_CI=0," \
 "http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_JP_ISO;DLNA.ORG_OP=01;DLNA.ORG_CI=0," \

これでmake clean allして、/tmp/minidlna/files.dbを削除して、も一度起動すると、BRAVIAのメニューにファイル一覧が出た!
これでひとまずLinkTheaterは外せるとは言え、いくつか課題が。

  • BRAVIAのリモコンにスキップボタンがない。早送りはできたけど。LinkTheaterではスキップを30秒に設定してCMをとばしていて、無いと意外に不便だ。
  • 一覧に出てくるのがファイル名で、サムネイルもなくて、どの番組か分からない。まあこれはuShareの時みたいに、TSの中から番組情報を引っこ抜く仕掛けを入れればよさそう。
  • やっぱり番組ごとの別フォルダにしたいなぁ。。。ってこれはfoltia側で録画保存先を分ければいいのだけど、面倒で手を着けてない。。。