【生主必見】ニコ生のコメントをニコニコ動画に流しこめるアプリを開発しました
ご無沙汰しております、KAI-YOUの小川楓太です。Slackの記事ではご好評を頂き嬉しく思っています。
いまKAI-YOUではゲーム実況主・よしだをプロゲーマーとして育成しております。そのプロジェクトの一環として「KAI-YOU.ch」というニコニコチャンネルの運営に大変力を入れています。
ニコニコ生放送では、リアルタイムの視聴以外にタイムシフト視聴という、後から見る機能があります。しかしながら、チャンネル放送のタイムシフトは一週間しか保持することができません(公式生放送は最大期間無制限)。
これに対応するため、生放送データを事前にダウンロードしておき、ニコニコ動画に動画としてアップロードするという対策が、多くのチャンネルでとられています。
ニコニコ動画にニコニコ生放送のコメントを流し込むという大変な作業を、とても簡単にするWebアプリケーションを開発したので、アーカイブの方法からWebアプリケーションの使い方まで、まとめてみました。
ニコニコ生放送をニコニコ動画にアーカイブする2つの方法
このニコニコ動画へのアーカイブには二種類の方法があります。
①生放送されている画面をスクリーンショット的に録画した動画データを用いる
②ニコニコ生放送のサーバーから取得した、もしくは放送時にPCかカメラ側で録画した動画データを用いる
①はMacであればQuickTime Playerなどの画面録画機能を使い視聴画面を録画し、ニコニコ動画に再アップロードするという方法です。この場合、録画が手軽でコメント付きの生放送を再アップロードできるというメリットがあります。
しかし、動画が低画質になり(ドットバイドットでの録画ができない場合がある)、生放送のコメントが動画として録画されてしまうのでニコニコ動画のコメントが被ってしまったり、コメント非表示ができなくなってしまうというデメリットがあります。
②は生放送時にサーバーにアップロードされた動画データを「kakorokuRecorder*1」や「RTMPdump」などのアプリケーションでダウンロードロードし、ニコニコ動画に再アップロードするという方法です。
もしくは、放送時にSSDレコーダーなどを使うかPCかカメラ側で録画するという方法もあります。PCで録画するときは録画機能のあるWirecastやFMLEを使うといいでしょう。
この場合、生放送時のコメントが動画に表示できないという問題が発生します。
ちなみに「kakorokuRecorder」でのダウンロード方法はこちらの記事がわかりやすいので参考にしてください。
アーカイブ動画のコメントは大方過疎ります。
既に放送された番組のアーカイブをわざわざ見ようというひとは少ないので、②のパターンだと特に寂しいものです。そのためにも生放送時のコメントを流し込む必要がありますよね。
つまり、②の方法で録画しつつ①のようにコメントを表示できるようにすることがベストな方法です。
さらに言えば、一般的なニコニコ動画のようにコメントと動画を分離し、ユーザーの任意で表示/非表示を切り替えられたり、コメントが被らないことが望ましいでしょう。
投稿者コメントを使って動画にコメントを流し込む
じつはニコニコ動画には、動画投稿者だけが使える特別なコメントがあります。
「投稿者コメント(ニコスクリプト)」と呼ばれるこの機能は、一気に数千のコメントを投稿したり、後から修正できたりと普通のコメントより格段に自由度が高く設定されています。
この機能を使えば、ニコニコ生放送のコメントをアーカイブした動画にもコメントを“コメントとして”挿入できます。
使い方は簡単で、右上の「エディタ表示」ボタンを押して編集モードに移り、「100::あいうえお」と入力すれば、動画開始から1分40秒(100秒)後に「あいうえお」というコメントが流れるという仕組みになっています。
つまり「時間(秒単位)::コメント」という形式で入力することでコメントを入力できるのです。
コメントデータをダウンロードする
では、挿入するためのコメントデータはどこから入手すればいいのでしょうか?
じつは、ニコニコが公式に提供してくれているツール「ニコニコチャンネルツール」からダウンロードすることができます。
コメント数が多い場合にはいくつかに分割されてしまいますが、ボタンを押すとXML形式のコメントデータがダウンロードできます。
【注意】ダウンロードしたファイルは拡張子が[.xls]のMicrosoft Excel形式になっています。そのままMicrosoft Excelで開くこともできますが、表示が崩れてしまうので、拡張子を[.xml]に変更しXMLファイルにしてからGoogle ChromeなどのWebブラウザで表示させることをオススメします。
「ニコニコチャンネルツール」にアクセス出来ない場合、または自分が放送した番組でない場合、この方法は使えません。
その場合は、コメントダウンロード用のアプリケーションを使いましょう。*2
「kakorokuRecorder」の設定で、動画データと同時にコメントデータもダウンロードしてくれる機能があります。これを使うと比較的楽なのではないかと思います。
XMLファイルをブラウザで表示するとこのようにインデントされ整形された状態で表示されます。
XML全体を囲む<list>というタグの下に<comment>、さらにその下に<time>、<_content>というタグが並んでいます。
<comment>
<time>09:28:15</time>
<_content>こんばんは~!</_content>
</comment>
<comment>タグひとつでひとつのコメントを表しており、<time>で囲まれている部分が放送時の12時間表記の時間(コメントファイルの冒頭は放送開場時間辺りになっていると思います。例えばこの放送では21:27〜放送開場、21:30〜放送開演となっていました。)、<_content>で囲まれている部分がコメントです。
コメントデータを運営者コメントとして動画に流し込む
XML形式のファイルをそのままコピーして投稿者コメントのエディタにペーストして、「<comment><time>09:27:40</time><_content>安定のよしだ</_content></comment>」と入力しても投稿者コメントは認識してくれません。
なぜなら、投稿者コメントでは「時間(秒単位)::コメント」という形式で入力しなければならないからです。
数十のコメントだったら手動で書き換えるということも不可能ではありませんが、数千数万のコメントを手動で書き換えることは現実的ではありません。
これがニコニコ生放送のコメントを流し込む上での最大のネックでした。
そこで、XMLファイルをアップロードするだけで、XMLから投稿者コメント(ニコスクリプト)の形式に書き換えるWebアプリケーションを開発しました。
その名も「Niconico Live Comment Importer」です(略称:NLCI)。
URL: http://nlci.herokuapp.com/
このWebアプリケーションはシンプルですが、必要な機能は一通り揃っているはずです。
①上記の手順でダウンロードしたコメントのXMLファイルを選択します。
②放送開演時間を12時間表記で入力してください。
【注意】放送開場時間ではありません!放送開場時間と放送開演時間はニコニコ生放送の番組ページで見ることができます。
【注意】24時間表記ではありません!
③動画開始時間を秒単位で入力してください。
ニコニコ生放送したデータを無編集でアップロードする場合は必要ありませんが、例えば冒頭にタイトルロゴを表示したりした場合、その分の時間を記入します。
もし冒頭に5秒間のタイトルロゴを入れたならば「5」と入力します。
④動画編集時間を秒単位で入力してください。
生放送で放送する際、放送開演時間オンタイムで放送を開始できればいいですが、大抵30秒〜1分ほど「まもなく開始します」などの画像を表示させ、放送されていることをチェックしてから、放送を開始するのではないでしょうか? そして、アーカイブ動画の編集でその部分はカットしませんか?
そのように編集でカットされてしまった冒頭部分の秒数を入力してください。
もし冒頭を34秒間カットしたならば「34」と入力します。
⑤変換ボタンを押すと変換されます。
⑥投稿者コメントにコピーする
時間がマイナスになっている部分はコピーせず、時間がプラスの部分のみ投稿者コメントエディタにコピーし、保存すれば投稿者コメントとして動画にます。
【ポイント】生放送の一部分だけ使い、その部分にコメントを流し込みたい場合は、動画編集時間を調整すれば可能なはずです。
例えば、02:00:00(2時間)の番組で01:01:00〜01:03:00の部分だけアーカイブしたいと仮定すると、3660秒の動画編集時間とします。
このWebアプリケーションを使えば、ニコニコ動画にニコニコ生放送の動画を最高の画質でコメントを付けてアップロードできるようになります。
QuickTime Playerで画面収録したものと比較してみました。ほとんど時差なく、文字はシャープに表示できていることがわかります。
「NLCI」について
今回は速度を重視してPHPで制作したので、HerokuというモダンなPaaSをサーバーとして使わせてもらいました。
HerokuはGit管理なので、GitHubでもリポジトリを作りました。せっかくなので公開します。
今後は、Webアプリケーションとして「kakorokuRecorder」のような機能を持たせ、ニコニコ動画への再アップロードに最適化された動画データとコメントデータをワンボタンでダウンロードできるようになればいいなと思っています。
コメントデータに関しては、検討がついていて、WebSocketを通じてダウンロードできるようです。
個人でダウンロードする分にはすぐにできそうですが、万人にWebアプリケーションとして提供するのは、認証の関係(ニコニコ生放送のコメントAPIはログインしていないとを使えないそうなのです……)がネックになりそうな予感がしてます。
動画については検討もついておらず、ニコ生のURLとメールアドレスを入力してもらって、サーバーサイドでRTMPdumpとFFmpegを動かして変換が終わったらメールでダウンロードURLを送るとかが最善なのでしょうか?
そもそもサーバーサイドでRTMPdumpを動かすってどうやればいいのかわからないし、他人の著作物である動画のダウンロードURLを提供するというのは、法律的にもグレーな気がします……。
「NLCI」を使って、ニコニコチャンネルを運営しているような方が、少しでも楽にニコニコ生放送をアーカイブできるようになればいいなと思って書きました。
プルリクエストお待ちしてます!