ニコニコ動画の2023年新配信サーバー「domand」メモ
(2023-11-16 時点の情報)
対応動画では ランダムで Watch API v3 の data.media.domand が非null になる
同じ動画でも domand が null だったり null じゃなかったりするので謎
そのうち安定して帰ってくるようになるでしょう
DMCからの移行動画は映像・音声データに変化はなさそう
■ 2023年11月1日より前に投稿された動画について
順次、新しい動画配信サーバーへ、そのまま動画データを移行します。
再度のエンコードなどは行いません。
sm9 の両ソースを H.264 Byte Stream Format にして比較したが完全一致
逆に言うと(DMCからの移行でない)新規動画はDMCと別のエンコード方法になっている
AWS Elemental を使ってるらしい (エンコーダ情報がそうだった)
基本的に
Watch API v3 から動画/音声のvariantと access rights を取るための key を貰う
ちなみにこれは JWT で JSON デコードすると
nvapi に access rights を取りに行く (hls, プレミアムなら storyboard も)
すると URL と cookie が貰えるので HLS として再生する (storyboard はまあ適当にJSON読む)
貰える URL には cookie 付いてないとアクセスできない
更新情報
2023-12-03 いつからか delivery.domand.nicovideo.jp/hls/... から delivery.domand.nicovideo.jp/hlsbid/... になった
Cloudfront の Cookie に Policy + 署名付けるタイプからクエリパラメータに Policy + 署名を付けるタイプになった
session cookie もクエリパラメータになった
とはいえ Cookie はまだ必須 (domand_bid Cookie がaccess rights の取得時に貰える)
storyboard の時はいらない? あるいは hls と共通?
技術的詳細
delivery.domand.nicovideo.jp と asset.domand.nicovideo.jp 共に CloudFront を通っている
asset.domand.nicovideo.jp は 裏が Amazon S3
全セグメントは AES で暗号化されている
DMC では一部のチャンネル動画だけだったが、domandではUGC含め全動画に拡大
keyは固定っぽい?
まあ今後 Lambda Edge で再暗号化みたいなことできる余地も全然ありそう
UGCでは固定だが一部チャンネル動画では……下記参照
DMC時代に Encrypted HLS が使われていた (一部チャンネル e.g. dアニ支店) 動画は /hlsbid/ ではなく /shlsbid/ になる
これは (storyboard を除き) すべて delivery.domand.nicovideo.jp から降ってくる
鍵がアクセス毎に変わる (DMC時代と同じ)
純粋にローカルキャッシュ用意したいなら asset.domand.nicovideo.jp だけをキャッシュしておけばimmutableで安全?
/hlsbid/16進数/……… ← この16進数は MongoDB の ObjectID 互換っぽい?
与太話
AWS で組んだらまあこんな感じになるでしょうね、みたいな構成だな〜という感想
エンコーダも AWS なら AV1 対応ドカンと来たりしないかな〜という妄想
ドメインが nicovideo.jp に戻りましたね〜という話
単純に Cookie ベース認証になったので third-party ドメインの Cookie のダルさを回避するためだと思う
RPGアツマール でも当初は別ドメインだったがあって結局 nicovideo.jp に戻っていたはず
domand 側の24文字のID、MongoDB の ObjectID か?