どうもこんばんわ。
ニコ生でAngel Beats!一挙見ました。天使ちゃんかわいい。
最終回私は好きです

ほんだい

全コメントきしめんNursery Rhymeをたちみどろいどで再生したい。
ちなみに最古のきしめんsm157は空耳なんだよね

たちみどろいどでのコメント描画

SurfaceViewではなくCanvas(View)でやってる。
10ミリ秒ごとに動かしている。ちなみに60fpsは16ミリ秒で更新らしい(1000÷60=16…)
私のPixelくん(3 XL)は60fpsなので無駄に計算させてる?。
90fpsな端末欲しいなぁ!

SurfaceViewではない

SurfaceViewとTextureView(Android N 以降非推奨)がなんか速くて、別スレッドで書かれるからUIが固まらないとか!?
というわけで試しにCanvasで書いたコメント描画をお引越ししてみたんだけど、

一気にコメント描画されるとコメントの移動が遅くなっちゃう。
でもこれCanvasだとコメントの移動が遅くなるとか無いんだよね(流しすぎて固まる事はある)

私の実装が間違っている説はあるけどとりあえずCanvasのまま行きます。

Canvas(View)だとハードウェアアクセラレーション(よくわからんけどGPU使ってくれる?)が使えるからもしかして・・・?

全コメント取得する

ニコニコ動画には過去コメント(名前の通り昔投稿されたコメント)を取得する機能があります。
これで全コメントが取れるようになります。

ちなみに:ニコニコ動画のコメント取得はクライアント(プレイヤー)側で制御してる。 再生時間に合わせて250件とか1000件とか指定してるっぽい。たちみどろいどではどんな動画でも1000件取ってます。

全コメント取得は以下の感じに
1 コメント取得API叩く
2 取得した中で一番古いコメントをの投稿時間を取る
3 一番古い投稿時間を過去コメントの時間に指定してAPI叩く
4 一番古いコメントの投稿時間を取得する
5 3~4をゆっくり(負荷がかかるから)繰り返すことで全コメント取得できる

今回は全コメント取得できるツールがあったので使わせてもらいました→ http://xeno.grrr.jp/

たちみどろいどで再生

たちみどろいどはmp4とコメントxmlファイルがあれば再生できます。
こんな感じの↓

1
<chat thread="ThreadId" no="3" vpos="コメントの再生位置(100で1秒)" date="投稿日時" user_id="ユーザーID">コメント</chat>

結果

全コメントきしめん sm367861 (9万コメントちょい)でやった

きしめん弾幕のところは固まってしまった

1万コメントでもちょっと固まった

おわりに

さきゅばすの追悼記事を読んでずっとやろうとしてたことができた。
下コメで動画が占拠されたり弾幕流れてるの見ると作ってよかったってなる。つくってよかった。
あとこれとは関係ないんだけど課題が多いんだが?もう休校終わるやんけ