miniDLNAいじり(じわじわ進行中)
その1
TSのパケットサイズ取得に失敗していた件。やはりamd64の場合だった。
miniDLNAが、API経由ではなく、AVFormatContextのpriv_dataを覗いてパケットサイズを拾っていて、LP64だとその位置がずれているという。。。こんなイメージ。
--miniDLNA/metadata.h.orig ++miniDLNA/metadata.h typedef struct tsinfo_s { - int x; + void* x; int packet_size; } tsinfo_t;
というわけで、こっちは解決。
miniDLNAにバグレポすべき?英語で??
その2
タイムベースシークが遅い件。デバッグモードでログがどかどか出てるので遅いのかと、普通に起動してみたが、やはり遅い。27秒スキップしても、27分スキップしても、だいたい3〜4秒かかる感じ。
だいたい同じフローを通るはずのバイトシークはそんなにかからないし、どこでひっかかってるんだろう。
その3
30分番組なのに9時間と判定されて、シークもぐちゃぐちゃ、の件。
av_find_stream_info()とdump_format()だけを呼んでみた。
Input #0, mpegts, from '(null)': Duration: 09:01:15.88, start: 22075.566433, bitrate: 2105 kb/s Program 101 NHKBS1 Stream #0.19[0x100]: Video: mpeg2video, yuv420p, 720x480 [PAR 32:27 DAR 16:9], 10500 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc Stream #0.17[0x101]: Video: mpeg2video, yuv420p, 352x240 [PAR 40:33 DAR 16:9], 300 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc Stream #0.13[0x110]: Audio: mp3, 0 channels, s16 Stream #0.18[0x112]: Audio: mp3, 0 channels, s16 Program 102 NHKBS2 Program 910 WNI Stream #0.14[0x1918]: Data: 0x000d Stream #0.15[0x1911]: Video: mpeg2video, yuv420p, 352x240 [PAR 10:11 DAR 4:3], 920 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc Stream #0.16[0x1912]: Audio: aac, 48000 Hz, 1 channels, s16, 49 kb/s Program 929 Dpa Stream #0.0[0x771]: Data: 0x000d Stream #0.1[0x772]: Data: 0x000d Stream #0.2[0x773]: Data: 0x000d Stream #0.3[0x774]: Data: 0x000d Stream #0.4[0x775]: Data: 0x000d Stream #0.5[0x776]: Data: 0x000d Stream #0.6[0x777]: Data: 0x000d Stream #0.7[0x778]: Data: 0x000d Stream #0.8[0x779]: Data: 0x000d Stream #0.9[0x77a]: Data: 0x000d
上は、Program名が化けてたところを削ったもの。
そういえば、録画したのはNHKBSだったのだった。複数番組あって、それぞれbitrateが違うので、そりゃまあうまく取れないわなあ。というか、2105kb/sって、どこから出てきた数字なんだろう。
見える範囲のすべてのストリームのbitrateを合計して、総ファイルサイズを割ればdurationになる?mpeg2video以外のパケットの分が誤差で、audioの影響がでかそうだが。
ほんとは、ターゲットの番組を特定して、最初のPCRと最後のPCRの差を取ればいいんだろうなあ。遅そうだけど。
直接関係ないけど、このファイル3番組あったのね。BRAVIAからは選択できん。。。