ニコ生メモ

モチベーション: Chrome Cast でニコ生見たい
事前予想: Chrome Cast は Flash 不可だしrtmpは対応してない。でもiPhoneアプリはHLSらしい*1ので原理的にはいけるはず。

結果: iPadSafariでTS視聴に成功。放送中のものは視聴には至らなかった。

手順は、
0. iPhoneのパケットを盗聴 (cf. Burp Proxy)
1. iPhoneニコニコ動画アプリでTS視聴開始
2. PUT http://uthaa21.live.nicovideo.jp/v1/programs/lv*********/sessions/597ad16f100be319ce3a18769bee031a8eeac0a09c9a4e8a39029687986d0316?_format=json みたいなリクエストをかくにん
3. 直後の http://uthaa21.live.nicovideo.jp/v1/programs/lv*********/sessions/597ad16f100be319ce3a18769bee031a8eeac0a09c9a4e8a39029687986d0316/streams/main/variant.m3u8 こんな感じのURLをコピー
4. iPadSafariにURLをペースト。

iPhoneの方とほぼ同時の動画が流れてくる。

5. iPhoneで視聴やめる
6. DELETE http://uthaa21.live.nicovideo.jp/v1/programs/lv*********/sessions/597ad16f100be319ce3a18769bee031a8eeac0a09c9a4e8a39029687986d0316?_format=json みたいなリクエストが飛ぶ。
7. iPadのほうも切れる

察するに、TS視聴するたびにサーバ側で、録画ファイルをストリーミングするプログラムが立ち上げられてる感じですかね

手順5でかわりにシークバーをいじると新しくPUTが飛んで新しいセッションが始まる。(ちなみにDELETEが飛ばない。これは意図してない動作な感じが…。)

PUTより前のこまごまとしたHTTPのやりとりから再現すればChromecast単体でニコ生TS視聴もできそう。放送中のが見れないのも何かミスってるだけでしょう…。
実装は時間もやる気も足りない。まだまだ嵌まりそうだし。

追記:CORS (Cross-Origin Resource Shareing) ヘッダ、即ち

Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Methods:GET,PUT,POST,DELETE
Access-Control-Allow-Origin:*

が(m3u8のレスポンスに?)付いてないとダメみたい?なので無理(一応確度低い)。TSを横流しするサーバでも建てるならともかく。