- 442 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/11(日) 01:16:02 ID:yK2v2Fxs0]
- >>426
おつかれさまです。 wrapper自分でいじったりしてバックシークとか使いやすくしたりしたので もう知ってるかもしれませんが、ちょっとだけ書いておきます。 ソースめちゃくちゃで見にくいので簡単に書いておきますと timeLine.metaDataを作っで、毎フレームnico.player.stream_nsを監視 ↓ nico.player.stream_ns != undefinedならonMetaData上書き (毎フレーム監視してるだけなので、負荷かかってると、上書きするまえにonMetaDataが発生してしまうかも) ↓ nico.player.stream_ns.onMetaData = function(infoObject){infoObjectをいろいろ操作}; ↓ キーフレーム情報があれば、infoObject.keyframes.timesにキーフレームの配列がある (単純にキーフレームの「秒」が頭から全部格納されてる) ↓ キーフレーム情報があった場合は、バックシークは配列情報を使って行う (前方シークはinfoObject.lastkeyframetimestampだけ使う) キーフレームがあらかじめ分かっていれば、 バックシーク時の「最小移動量」とかだけ自分で設定して、 あとは配列みながら移動場所決めればいいので、なかなか快適です。 7月下旬ごろ(たぶん)から、 「メタデータのないflv」または「ニコニコでエンコする動画」 のどちらかに関しては、ニコニコ側でキーフレーム情報がちゃんと付与されるようになったみたいです。 (metadatacreatorがSMILEVIDEOになってるやつ) ただし、自前エンコで一部のソフトはメタデータを自分でつけるみたいで そういう場合はニコニコはメタデータをつけないようなので、 キーフレーム情報は付与されません(たぶん)。
|

|