12/08/18 04:37:58.18 XH3n1Qy80
じゃあなるべく厳密に書くよ
延々とスレ違いの内容を書くのも心苦しいが、なるべくこれで終わりにしていただくつもり
用語等はASFの仕様書を参照:URLリンク(www.microsoft.com)
まずストリーミング配信の話である、が大前提。
GASでもファイルをダウンロードするなら何も書き換えないでしょう。たぶん。
自分は接続が切れた場合の話はしてない(正常に終了してもシーク不可という話をしていた)が、
そもそも接続切れとシークの可否はストリーミング配信では関係ない。
もしファイルを配信しているなら>>97のようなこともありえるが、
ストリーミング配信では終わりがなく、末尾をどこにするかはクライアントが決める。
よってindexをサーバーから受け取るとしたら切断時だが、手順を踏んで正しく切断してもindexは送られてこない。
(パケットキャプチャしてみればわかるし、クライアントごとにindexの準備なんてしていたらサーバーの負荷が無駄に増える)
つまり、IndexObjectはクライアント側で勝手に付けるしかない。
そういうわけで、indexひとつ取っても「GASは決して受信したままのpacketだけをファイルに記録しているわけではない」。
ちなみにGASによって付けられるindexは内容を解析して付けてくれるわけではなく、内容によらずほぼ一定の形式的なもの。
ではindexをつければシークできるかというと、生データにGASと同様のSimpleIndexObjectをつけてもシークできない。
で、パケットキャプチャした内容とGASで保存したファイルを比較したらいくつかメタデータが修正されていたので、
生データ+SimpleIndexObjectのファイルに同様の修正をしたらシークできるようになった。
具体的にGASが何を書き換えているか書くのがいちばん説得力ありそうなので、昔調べたのを転載。