はじめに
Qiita初投稿です。よろしくお願いします。
今回は知っているようで知らないかもしれないニコニコ動画の仕様について、動画情報にしぼって私の経験に基づいて説明したいと思います。
なお私自身はニコニコ開発側の人間ではなく、ただのユーザーですが概ね間違っていないと思います。
本記事では仕様解説を行い、後日別記事でAPIによる情報取得について述べるつもりです。
情報は記事執筆時点での情報であり、予告なく仕様変更されることが多いので都度確認してください。
ID
まずニコニコ動画では動画を管理する上で用いられている、動画ID、スレッドID、ユーザーID、チャンネルIDについて述べます。
動画ID
一番良く知られているIDです。ニコ動でIDというと大体こいつを指します。sm9 とか so23335421 とかそういうのです。
smやsoにあたる接頭文字については十数種類あるのですが、ニコニコ大百科のIDの項で詳しく解説されているのでここでは省き、代表的な3つを解説します。
接頭辞
- sm
- 一般ユーザーが投稿ページからアップロードするとsm動画になります。現在存在する大部分の動画がsm動画です。
- nm
- ニコニコムービーメーカー(以下NMM)経由でアップロードするとnm動画となります。あくまでNMM経由でアップロードされた動画に付けられるIDであり、必ずしもswfのフラッシュ形式であるとは限りません。nm動画でmp4やflv形式の動画も存在します。
- so
- チャンネル動画にはsoが割り当てられます。アニメ配信などの公式チャンネルや、一般ユーザーのゲーム実況などのチャンネルいずれもso動画です。しかしURLでは後述する数字10桁のスレッドIDを主に見かけることが多いのであまり目にしないかもしれません。
数字
接頭辞に続く数字部分です。こちらは動画アップロード順に連番が振られます。アップロード開始時点なのか完了時点なのか、動画情報入力確定時点なのか、どのタイミングの順番かは不明。
スレッドID
スレッドIDは数字10桁のIDです。スレッドという名前の通りコメントに関するIDです。すべての動画投稿時には自動的に1つスレッドが作られ、通常コメント用にデフォルトスレッドが割り当てられます。デフォルトスレッドIDの数字の割り振られ方はアップロード完了時刻またはエンコード終了時刻のUNIX時刻と推測されます。なお、以下の場合にはひとつの動画に対してデフォルトスレッドに加えて複数のスレッドが作成されます。
- チャンネル動画
- チャンネル動画ではデフォルトスレッドIDに+1したチャンネルコメント用のスレッドが作成されます。チャンネル動画ページではこちらのスレッドでコメントを読み書きします。なおこのときのチャンネルコメント用のスレッドIDはチャンネル動画ページのURLでの数字だけのIDとしてよく見かけると思います。
- コミュニティ動画
- コミュニティ動画として登録すると、デフォルトスレッドに加えてコミュニティコメント用に別スレッドが作成されます。
- マイメモリー
- マイメモリー機能を用いてコメント保存をした場合に、元のスレッドからコメントが複製されて新たにスレッドが作成されます。
動画IDとスレッドIDの対応関係
前述したことからわかるように、動画IDとスレッドIDは一対多の関係で紐付けされています。ニコニコ側のシステム内部的な話をすると、ある手段(視聴ページやAPI等)で動画IDを用いて情報を参照された場合、ニコニコ側ではコメントを読み込むために動画IDに対応した一つ以上のスレッドの中から一つあるいは複数のスレッドの情報を呼び出します。ここで、呼び出し元によって参照するスレッドが異なります。なお、スレッドIDを用いて参照した場合は、指定したスレッドと対応する動画IDの情報が参照されます。
視聴ページから動画IDで呼び出された場合、デフォルトスレッドは必ず参照されます。加えてチャンネル動画の場合にはチャンネルコメント用のスレッドも追加で呼び出され、チャンネルコメント用スレッドのコメントを描画・書き込みを行います。チャンネル動画以外では、デフォルトスレッドのみを参照します。
APIから動画IDを用いて呼び出した場合はAPIの種類にもよりますが、getthumbinfoなどはデフォルトスレッドのみが参照されます。つまりチャンネル動画のコメントは取得されません。情報を取得する場合には注意が必要です。(コメント数が0と返されます。)
2018/7/10追記:数週間前からgetthumbinfoでチャンネル動画(so)を参照するとチャンネルスレッドが参照されるように仕様変更され、コメント数が取得できるようになったようです。
なお、視聴ページ・APIともにスレッドIDでアクセスすると、指定したスレッドが呼び出されます。(例えば1173108780というスレッドはsm9のデフォルトスレッドなので、http://www.nicovideo.jp/watch/1173108780とアクセスするとsm9につながります。)
ユーザーID
ユーザーIDは番号の若い部分を除いて、現在はほぼ登録順の連番となっています。詳細は動画IDと同じくニコニコ大百科のIDの項に記されています。
チャンネル動画ではユーザーIDを目にすることは稀ですが一応存在しています。公式アニメ配信の投稿ユーザーはひとつのユーザーIDでひとつの作品を投稿している場合と、ひとつのユーザーIDから、複数の作品(チャンネル)を投稿している場合に分けられますがほとんどは後者です。前者で私が認識しているのは「てさぐれ!部活もの」くらいです。
チャンネルID
チャンネルIDは"ch(数字)"となっており、例としてご注文はうさぎですか?チャンネルのIDはch2591203なので、http://ch.nicovideo.jp/ch2591203とアクセスするとそのチャンネルページにアクセスできますが、略称gochiusaを使用したhttp://ch.nicovideo.jp/gochiusaへリダイレクトされるようになっています。
なお面白いことにch1はNHKちゃんねるです。
現在動画投稿が行われているチャンネルIDはかなり飛び飛びになっており、一般ユーザーがブロマガを立ち上げた場合にも割り振られていると私は推測しています。(ブロマガはチャンネル内のツールであるため。)
投稿日時
投稿日時ですが、予約投稿が可能になってからは正確には初公開日時という方が正しい気がします。非公開設定で投稿した後に、公開設定へ変更すると変更した時点の時刻となるようです。
視聴ページでは分単位まで、各種APIでは秒単位まで表示されています。予約投稿では分単位まで指定でき、00秒固定となっています。一般的に投稿日時は一度公開すると変更することが出来ないのですが、チャンネル動画の場合は少し異なるようで、一旦非公開になったあと再公開されたときに、2回目の公開日時に変更されていた事例がありました(だがしかし1期など)。必ずしもこうなるとは限らず、今のところ詳細は不明です。
サムネイル
時系列概要
~2017/11
- ttp://tn-skr[1-4].smilevideo.jp/smile?i=(動画IDの数字部分)
※[1-4]は $(動画IDの数字部分) mod 4 + 1$ で決定 (負荷分散のため?)
2017/11~2018/12/19 16:21
- ttp://tn.smilevideo.jp/smile?i=(動画IDの数字部分)
※2017/11から数週間かけてこの仕様に移行
※サムネイル変更時は末尾に".(5桁以下の数字)"を付加 (チャンネル動画・プレミアム会員(10/18~))
参考:画像選択
2018/12/19 16:22~2019/5/21 16:05
- ttp://tn.smilevideo.jp/smile?i=(動画IDの数字部分).(5桁以下の数字)
2019/5/21 16:06~現在
- ttp://nicovideo.cdn.nimg.jp/thumbnails/(動画IDの数字部分)/(動画IDの数字部分).(8桁以下の数字)
※2019/5/21以前の仕様では、サムネ変更にてURLが変わっても、変更前の画像URLで変更前の画像が取得できましたが、本仕様からは取得できなくなりました。
画像選択
一般ユーザーの動画サムネイルは動画投稿時に投稿者が動画内のフレームを選択するか、プレミアム会員は任意の画像をアップロードして設定することができます。チャンネル動画では初期画像があったり、後から変更できたりする模様です。
2018/10/24追記:10/18よりプレミアム会員のみ、すでに投稿した動画のサムネイルを変更できるようになりました。
チャンネル動画のうち、特に公式アニメ配信では公開時に番組ロゴだったものが、後から動画内のシーンに変更されることがよくあります。
サムネイルが変更されると、初期のURLから".(5桁以下の数字)"が追加され、以下のようになります。
こちらは2017/11~2018/12/19の仕様です。
- ttp://tn.smilevideo.jp/smile?i=32559385 (サムネイル変更前)
- ttp://tn.smilevideo.jp/smile?i=32559385.92604 (サムネイル変更後)
なお過去のチャンネルにはサムネイル変更機能がなかったのか、以前は新たにサムネイル変更用の動画を投稿してサムネイルのURLを別動画のものに変更するという荒技がとられていました。以下は実例です。ご注文はうさぎですか?9羽(動画ID:so23748640)はもともとhttp://tn.smilevideo.jp/smile?i=23748640というサムネイルが設定されていたのですが、サムネイル変更用にso23792389が投稿され、サムネイルはhttp://tn.smilevideo.jp/smile?i=23792389に変更されています。
画像サイズ
前述したサムネイルURLにアクセスして得られる画像は130x100pxと小さいものですが、URLの最後に".M"や".L"を付与すると、より大きい画像を得ることができます。なお大きいサイズの画像を得られるのは最近の動画に限られるので注意が必要です。大きいサムネイルが生成されていない動画では404 Not Foundが返されます。
補足:アスペクト比4:3の動画の場合は240x180pxとなります。
おわりに
本記事は独自研究に基づいています。もし間違い等あればご指摘ください。
冒頭でも述べたとおり、次回はこれらの情報についてAPIでの取得方法をまとめたいと思います。
追記:雛鶴あいさん、サムネイルの解説ありがとうございました。