07/11/11 01:16:02 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になってるやつ)
ただし、自前エンコで一部のソフトはメタデータを自分でつけるみたいで
そういう場合はニコニコはメタデータをつけないようなので、
キーフレーム情報は付与されません(たぶん)。