ニコニコ動画解析結果、そして保存ツール「さきゅばす」

Posted on

「さきゅばす」の公式サイトは移動しました

 こちらに移動しました。

 みなさん、お久しぶりです。別に死んでないです。忙しかったんです。ほんとですってば。まあ死んだらサーバも消えるか、家族からのお知らせが出ます。たぶん・・・。

 コミケにサークル参加することになりました。よろしくお願いします。場所は 1日目東W 03-b です。内容はしたのソフトのreadmeに書いておきました。詳しくはもう少しあとに発表します。

 ニコニコ動画、オリジナルのネタも最近増えてきて、いい感じです。やっと日本でも動画の文化が芽生えてきたかなーと思います。やはり国産であることは重要なんでしょうか。「エアーマンが倒せない」→「天気予報があたらない」のような流れはニコニコ独特かもしれません。

 さて。コメントが画面上を流れてる以上その流れ方その他がどうしても気になるんですよ、やっぱり。というわけで解析しました。ついでにその結果を流用して、動画とコメントをダウンロードしてきて「コメントつき動画」に変換してくれるソフトを書いてみました。「カハマルカの瞳」のようなキャプチャソフトではないので、非力なCPUでも時間さえかければ、多少再現性は落ちますがコマ落ち無しでかなりきれいに変換できます。

解析結果

コマンド一覧

  • 位置制御
    • 通常
      • ue:画面上部に表示します。
      • shita:画面最下部に表示します。
    • プレミア専用
      • ありません。
  • カラー制御
    • 通常
      • red:#FF0000
      • green:#00FF00
      • blue:#0000FF
      • cyan:#00FFFF
      • yellow:#FFFF00
      • purple:#C000FF
      • pink:#FF8080
      • orange:#FFC000
    • プレミア専用
      • niconicowhiteもしくはwhite2:#CCCC99
      • marineblueもしくはblue2:#33FFFC
      • madyellowもしくはyellow2:#999900
      • passionorangeもしくはorange2:#FF6600
      • noblevioletもしくはpurple2:#6633CC
      • elementalgreenもしくはgreen2:#00CC66
      • trueredもしくはred2:#CC0033
      • black:#000000
  • サイズ制御

 コメントのフォントはArialを指定していますが・・・。これは英文フォントですね。FlashPlayerの挙動が分からないので、よく分かりません。Web職人さん教えてください。でも多分MSゴシックです。

 字体はボールドが指定されています。

    • 通常
      • コマンドなしのサイズは24です。
      • small:大きいサイズ(39)で表示する。
      • big:小さいサイズ(15)で表示する。
    • プレミア専用
      • ありません。
  • その他
    • sage:何かチェックがされてます。多分、最新コメント一覧に上がりません。

表示時間について

 コマンドにueもしくはshitaを指定すると、動画上のポストした時間から3秒間表示されます。

 それ以外は動画上のポストした時間の1秒前から4秒間表示されます(プログラム上は5秒間になってる。隠れた後も描画だけはしてる。多分バグ。→7/6バージョンで修正済み)。つまり、文字数が多いほうが速いわけですね。wwwwwwwwならともかく、中身のある長い文章を書くと読めません。

 また、コメントの表示終了時間がビデオの時間を超えた場合、ビデオの時間を超えないようにコメントの表示時間は調整されます。最後にコメントがばーっと出てくるのはそのためです。

半透明処理について

 古いと半透明に表示されます。

  • alpha値 = 0.6 + (コメントの投稿番号)/(一番最後のコメントの投稿番号) * 0.4

です。ただし、自分のコメントは1.0fです。

 この計算式は奇妙で、とても投稿数の多い動画の場合、もうすぐ消えそうなコメントでもほとんど半透明になりません。これもバグじゃないのかなぁ。。。

ベベルフィルタ

 コメントにはベベルフィルタという影が掛かっています。コメントが黒以外のときは黒のぼやけた影が、コメントが黒のときは白のぼやけた影が出来ます。コメントの色と背景色がかぶったときの対策です。

総コメント数

  • 動画が1分未満の場合:100件
  • 動画が5分未満の場合:250件
  • 動画が10分未満の場合:500件
  • それ以上:1000件

 これはクライアント側が制御できます。ただし1000件以上指定しても1000件しかかえって来ません。

 1画面内に表示できるコメント数は30件までで、30件以上表示しなければならないときは、表示が終わる時間が一番早いものから消されていきます。

コンパチを作って、それを利用する保存ソフト作った。

  • 「さきゅばす」 ver1.05(解析元:2007/07/13 17:00のプレイヤ):一番上で紹介するエントリーでDLしてください。すいません。

フォントの準備

 このソフトを起動するためには、TrueTypeフォントが必要です。ニコニコ動画と同じMSゴシックを使う方法についてはreadmeの中で解説しておきました。もちろん、みかちゃんフォントのような別のフォントも使えます。

一部のマイナーなCPUで変換できない?

 私の持っているクルーソーというCPUのノートPCでは、変換できませんでした。SDL_gfxが原因のようです。†1

 解決策としては、初心者の初心者による初心者のためのSDLの、配布ページ(一番下)で配布しているDLLパックのsdlgfx.dllをSDL_gfx.dllにリネームして、「さきゅばす」のSDL_gfx.dllにこれを上書きするとうまくいきました。

実装方法

 ffmpegのvhook機能を使って、実装しました。なんとまあマイナーな機能・・・。

 このFFmpegは一部改造してあります。

  • 処理がデコード後すぐだったのを、エンコード前に移動した。
  • fpsと総フレーム数、現在のフレームカウンタをvhookプログラムに渡すようにした。

 もちろんですが、「一応動く」ように、です。。。

 ライブラリにはSDL+SDL_ttf+SDL_gfxを使いました。ライブラリの挙動がFlashと若干違うようで、再現性はあんまり高くないです。ベベルフィルタもないので、自作の影フィルタでごまかしてます。一応文字と同じ色の動画でも隠れたりはしないですが、本家のフィルタのほうが見やすいです。

 ランダム処理が一部入ってますが、Seedは固定なので毎回同じ結果を返します。つまり、ツーパスも出来る、ということです。

 ちなみにffmpegはフルオプションです。結構貴重?w

再現できていない点

  • 文字幅がちょっと太めになる。MSゴシックだと思うんですが・・・フォントが違うのかな。1.05で修正。msgothic.ttcを用いてフォントインデックスを1にすれば大丈夫です。
  • ベベルフィルタがない。ただし、自作の影があるので、閲覧には支障ないです。

スクリーンショット

20070626-01.png

※画面は開発中のものです(書いてみたかっただけ)。

サンプル

 きしめんを変換してみました。さきゅばすだけに。やはりコメント付き動画はビットレートが高くなりがちで、データ容量のほとんどは弾幕で消えてると言っても過言ではないと思いますw

 すさまじくコマ落ちしてますが、ビットレートが高いままの動画ならコマ落ちしません。。。自分で変換してみてください(エンコードしたことないので。。。)。

 ついでに、コメント表示数と取得数を馬鹿みたいに増やして変換してみました。これは気持ち悪い・・・w

 コメントや質問、バグ報告や追加機能の提案その他があったら気軽にどうぞ。

チラシの裏

 すごい悔しいのですが、今のところWindows専用です。理論上対応できますが・・・要望があればやるかもしれません。

 Flashをそのまま利用するんじゃなくってコンパチを作るって発想が1.0臭くていかんなー。でもまあ面白かったのでそれでよし。

 サキュバスは夢魔(むま)ともいわれていて、睡眠中に男を襲って誘惑して精力を奪うとされる悪魔です。避けるためには枕元に牛乳を置けば良いらしいです。・・・こういう伝説に出てくる魔物とかって結構馬鹿じゃね?w

 え、なんでサキュバスかって?・・・ハヒr(ry

  • †1: クルーソーが持ってない命令を実行しようとしたと思われる。