11月頃から新サーバに移行しはじめてたり戻ったりしてるニコニコの配信形式ですが、どうやら以前のhls形式とは違った形式での配信が行われているようです。
三行で説明しろ
- 基本的にm3u8の形式に沿った配信がなされている
- 所定のファイルをすべてダウンロード後m3u8ファイルを書き換えることでffmpegで変換できる
- 単純にすごくめんどくさいので拙作のnico downloaderを使ってくれると嬉しい
API
- API叩いたらここでもA/Bテストしているっぽくて泣きそうになった
- 安定してないのでここはかけない
m3u8の安直な取得方法
- 前と同様にシステムメッセージに書いてある
動画の読み込みを開始しました。(https://delivery.domand.nicovideo.jp/hlsbid/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ )
っていうところに書いてます
API叩いたらこのURL出せたけどAPIの挙動が読めないのでオワリ
m3u8ファイルが3つになった!
- 音声と動画部分が分かれて配信されるようになった
- TS形式ではなくCMAFで配信されるようになった
- Keyは#EXT-X-KEYに置いてあるURIが書いてある
- init01.cmfvとかinit01.cmfaは結合するために必要
ffmpegで結合する方法
-
m3u8ファイルを3つ用意する
- システムメッセージに書いてあるm3u8
- 1に書いてあるURIから持ってきたvideo-h264-XXXp.m3u8(XXXpは画質)
- 1に書いてあるURIから持ってきたaudio-h264-XXXkbps.m3u8(XXXkbpsは音質)
-
上記2と3に記載されているファイルをすべて保存する
-
中身をすべて書き換える
- URIをどうやらファイル名だけにするとよいようだ
-
ffmpegで結合する
ffmpeg -allowed_extensions ALL -i システムメッセージに書いてある.m3u8 -c copy 出力動画名.mp4
これで一応再生できるh264のmp4が出来上がるはず
めんどくさい方へ
この作業を自動でやってくれる拙作のChrome拡張機能 nico downloader があるのでぜひ使ってください。
ぐちゃぐちゃなコードで良ければ参考に