ワンセグTS まだまだ

M3U8ファイルをゆるゆると追記しつつ、出力する前にiPhoneに読ませたいのだけど、うまくいってない問題。
最初は何も考えずにTOTの解析処理に従ってじわじわ出力してたら、iPhoneはプレイリストが完成するまで再生を始めなかったのでダメ。
次は、いったんiPhoneに読ませたら30秒間は更新せずに、30秒経ってから一気に更新してみたら、iPhoneは割と早いうちから再生開始してくれるようになったけど、30分番組なのに18分とかで認識したり、半分くらいまでいったら再生しなくなったり、どうも動きが怪しい。
どちらにしても、いったん出力完了したM3U8は/tmpに残ったままになってて、2度目からの再生はスムーズなのだけど。
というわけで、再度英語に立ち向かってみる。
http://tools.ietf.org/html/draft-pantos-http-live-streaming-06#section-6.2.1

If the Playlist does not contain the EXT-X-ENDLIST tag, the server
MUST make a new version of the Playlist file available that contains
at least one new media file URI.  It MUST be made available relative
to the time that the previous version of the Playlist file was made
available: no earlier than one-half the target duration after that
time, and no later than 1.5 times the target duration after that
time.

プレイリストにEXT-X-ENDLISTタグが含まれていない場合、サーバは、最低1つの新しいメディアファイルのURIを含む、新しいバージョンのプレイリストファイルを提供しなければならない
それは、元のバージョンのプレイリストファイルが利用可能になった時刻を基準として、次のように利用可能でなければならない
・その時刻後、target durationの半分よりも早くてはいけない
・その時刻後、target durationの1.5倍よりも遅くてはいけない
。。。ふむ。
target durationはEXT-X-TARGETDURATIONで宣言した10秒だとすると、いったん出力したら5秒は出力しちゃだめで、15秒までに出力しなきゃだめ、ってこと?30秒待つというのは間違いか。
iPhoneから読まれるタイミングが14秒目だったらどうするんだろう、という気もするけど、とりあえず10秒ごとflushでやってみるか。。。
ところで電車に乗ってて思ったのだけど、PT2からTSを読みつつ、ワンセグ切り出して、10秒x3セグメント分をバッファリングして、sliding windowタイプのプレイリストを出力するサーバをでっちあげれば、ワンセグの疑似リアルタイム視聴ができるんじゃなかろうか。

【やってみた】
ダメだー。もしドラで試してみたら、6:18の尺で認識されて、そのまま見てたら残り31秒のところで固まった。一度閉じて開き直したら、その時点ではプレイリストが完成しているので、ちゃんと30分で認識されて、問題なく見れる。。。むー。
いや、プレイリストを事前に作っとけば済む話ではあるけど、なんか悔しいし。