livedl - 新配信(HTML5)に対応したニコ生録画ツール。他サイトにも対応

livedl - 新配信(HTML5)に対応したニコ生録画ツール。他サイトにも対応

お知らせ(2019/1/2)

f:id:himananiito:20181230001607p:plain
サンプル画像

はじめに

  • このページでは、livedlの使い方について説明します。
  • ニコ生新配信録画ツール(仮(KakkoKari) をお探しの方は、以下のニコニココミュニティです。
  • livedlで録画できない場合などは「(仮」も併せて試して下さい。

com.nicovideo.jp

以下では、livedlについて説明します。

  • 更新状況
2018/12/15 20181215.35: win32版ビルドを追加
2018/10/3 20181003.32:【重要】必ずアップデートして下さい⚡ 🔹#14 ★緊急 [ニコ生] 新配信録画のプレイリスト取得にウェイトが入らない等の修正🔹YoutubeLiveコメント(未完了。sqliteに保存まで)

ダウンロード

以下の、livedl.zip にWindows(x64)のビルドがあります。
その他の環境については、各自でビルドしてください。
ビルド方法が分からない場合はお知らせください。
https://github.com/himananiito/livedl/releases

サイトの対応状況

サイト対応コメント備考
ニコニコ生放送(ライブ)HTML5(HLS)に対応。データベース(sqlite3)に保存。
ニコニコ生放送(公式,ユーザー(新配信)タイムシフト新配信のタイムシフトの録画に対応
ニコニコ生放送(公式(Flash)タイムシフト新配信の使用を推奨
ニコニコ生放送(実験放送)仮実装中
ニコニコ生放送
(実験放送のタイムシフト
👉https://github.com/himananiito/nico-jikken-get
ツイキャス(ライブ)WebSocketでの録画に対応
ツイキャス(録画)未対応。将来的に対応予定
YouTube Live
YouTubeアップロード動画

要streamlink。コメント対応中
その他未対応

GUI版(お試し版)の使い方

実行ファイルはlivedl-gui.exeです。

基本的な使い方

  1. 左上の入力欄に、放送URLまたは.zip/.sqlite3ファイル名及び必要であればオプションを入力
  2. 右上のStartボタンを押す
  3. 途中で止める場合はStopボタンを押す

GUI版でのニコ生のダウンロード方法

  • アカウント登録(初回だけ)
    • GUI版(livedl-gui.exe)を起動して、上の小さいテキスト入力欄に、以下のような感じで入力
    • ログインIDが「test@yahoo.co.jp」、パスワードが「aiueo」、録画したい放送IDが「lv31444444」の場合
-nico-login "test@yahoo.co.jp,aiueo" lv31444444
  • アカウント登録済みの場合
    • 上の小さいテキスト入力欄に「lv31444444」のように放送IDを入力する
  • Startを押すと、ログインができれば保存が開始される。
  • .sqlite3ファイルをGUIウインドウにドラッグ&ドロップするとmp4に変換される(ffmpegが必要)

その他の使い方

  • 起動時に放送URLがオプションに渡された場合はそのまま録画を開始します。
    • namaroku等への対応
  • GUI画面にURLテキストがドロップされた場合、録画を開始します。
    • ブラウザのアドレスバー等からに対応
  • GUI画面に録画ZIPファイルがドロップされた場合、変換を開始します。

その他の説明

  • 放送URL及び各オプションは半角スペースで区切って下さい
  • 録画中にGUIを閉じてもほとんどの場合、録画データは壊れずに保存されます。
  • livedl-gui.exeとlivedl.exeは必ず同じディレクトリに配置して下さい。
  • GUI版はコマンドライン版livedlのラッパーなので下記も参照して下さい
  • 入力欄の文字列はそのままコマンドライン版の引数に渡されます
  • GUIのバグによりコマンドライン版livedlが終了しないことが起こりえます。この場合はProcessExplorerでlivedlを探して終了させて下さい。
  • .NET Framework 4.6.1が必要なので、起動できない場合にインストールして下さい。

https://www.microsoft.com/ja-jp/download/details.aspx?id=49982

使い方(概要)

コマンドラインPowerShellコマンドプロンプト,シェル等)で実行して下さい。
ただし、PowerShellの場合は基本的には livedl は ./livedl と読み替えて下さい。

コマンドラインで以下のように実行します。

livedl [COMMAND] options... [--] FILE

 

COMMAND

以下のいずれかを指定。ただし、FILEでURLを入力してサイトが判定できる場合には指定不要。

-nico ニコニコ生放送の録画
-tcas ツイキャスの録画
-yt YouTube Liveの録画
-d2m 録画済みのデータベース(sqlite3)を動画ファイル(mp4/ts)に変換する

オプション(共通)/option:

-h ヘルプを表示
-v バージョンを表示
-- 後にオプションが無いことを指定

その他のオプションは各コマンドの場合の説明を見て下さい。

FILE

録画したいURL、固有のID(いずれかの録画コマンド)またはファイル名(ローカルファイル操作コマンド)を指定します。

⚠プログラムの終了方法

録画中に終了する場合は、正しく終了するためにコンソールの画面上でCtrl-Cを入力して終了して下さい。
プログラムを突然終了した場合にZIP/データベース ファイルの最終処理ができません。


(備考)設定ファイルについて

設定ファイルはログイン情報設定ファイル一般オプション設定ファイルに保持されます

ログイン情報設定ファイルには、サイト(ニコニコ)のログイン情報が保持されます。
ログイン情報設定ファイルの場所は以下の優先度が最も高いものとなります。

  1. 環境変数 LIVEDL_DIR がある場合、$LIVEDL_DIR 直下の account.db
  2. 環境変数 APPDATA がある場合、$APPDATA/livedl/account.db
  3. 環境変数 HOME がある場合、$HOME/.livedl/account.db

Windowsでのデフォルトは、%APPDATA%\livedl\account.db です。

ログイン関連で問題が出た場合は本ファイルを削除してみて下さい。

一般オプション設定ファイルには、コマンドのオプション(ファイル名フォーマット)など、アカウント情報以外が保持されます。
一般オプション設定ファイルの場所は実行ファイルと同じディレクトリの conf.db です。

設定関連で問題が出た場合は本ファイルを削除してみて下さい。

ニコニコ生放送の録画

⚠ HTML5での録画時に、ブラウザ等で視聴しようと場合には通信が一度切れますが自動的に再接続されます。
録画に失敗しないようにするため、同じ配信をブラウザでは開かないようにして下さい。
ブラウザで見る場合は、別アカウントで見て下さい。

namarokuと連携する方法(20180525.12で暫定対応)

✔ あらかじめ下記「初めて実行する場合(ニコニコ生放送のアカウント設定)」からアカウント設定して下さい。

⚠ namarokuから各種オプションを指定できないため、パスワード付き設定ファイルにした場合は対応していません。

  • namarokuのツール -> 設定 -> アプリ設定タブ -> アプリケーションA,B,C のいずれかに、livedl.exeまたはlivedl-gui.exeをフルパスで指定して下さい。
例:C:\hoge\hoge\livedl.exe
  • namarokuの「お気に入り・NG設定」でアプリA,B,Cの上記で設定した、いずれかをチェックして下さい。
  • livedl.exeを登録した場合、録画中はコンソール画面が出るので、途中で終了する場合は、コンソール画面上でCtrl-Cを入力して下さい。

namaroku Ver.1.5.0との連携を確認済。

オプション(ニコニコ生放送

オプション                  設定保持 説明
-nico-login id,password ニコニコのIDとパスワードを設定し設定ファイルに書き込む
-nico-hls-only                録画時にHLSのみを試す
-nico-hls-only=(on/off)         上記設定を保持する
-nico-rtmp-only         録画時にRTMPのみを試す
-nico-rtmp-only=(on/off)      上記設定を保持する
-nico-rtmp-max-conn num RTMPの同時接続数を設定
-nico-rtmp-index num[,num]  RTMP録画を行うメディアファイルの番号を指定
-nico-status-https     [廃止] getplayerstatusの取得にhttpsを使用する
-nico-hls-port portnum [実験的] ローカルなHLSサーバのポート番号。指定時に、指定のポート番号にHLSのサーバーを立てる。ffplay(確認済)やVLC(未確認)等にて、http://127.0.0.1:<指定したポート番号> にアクセスすることで映像を確認することができる。接続時に時間がかかることがあるので、localhostではなく127.0.0.1とすることを推奨。
-nico-limit-bw num 新配信におけるプレイリストのBANDWIDTHの上限値を設定する。設定値を下回るプレイリストがない場合、最も小さいものを使用する。デフォルトでは制限なし。
-nico-fast-ts 新配信での倍速タイムシフト録画を有効にする
-nico-fast-ts=(on/off) 上記設定を保持する
-nico-format "FORMAT" 新配信における保存時のファイル名を指定する。デフォルトは "?PID?-?UNAME?-?TITLE?" 。例えば、recというフォルダの下に、ユーザ名でフォルダを分けたい場合は "rec/?UNAME?/?PID?-?UNAME?-?TITLE?" のようにする。拡張子をここで指定しないこと。FORMATについては下記別表参照。
-nico-auto-convert=on 録画終了後自動的に動画ファイルに変換するように設定
-nico-auto-convert=off 上記を無効に設定
-nico-auto-delete-mode 0 自動変換後にデータベースファイルを削除しないように設定(デフォルト)
-nico-auto-delete-mode 1 自動変換で動画ファイルが分割されなかった場合のみ削除するように設定
-nico-auto-delete-mode 2 自動変換で動画ファイルが分割されても削除するように設定
-nico-login-only=on 必ずログイン状態で録画する
-nico-login-only=off 非ログインでも録画可能とする(デフォルト)
-nico-force-reservation=on 視聴にタイムシフト予約が必要な場合に自動的に上書きする
-nico-force-reservation=off 自動的にタイムシフト予約しない(デフォルト)
  • 変換オプション(-nico-auto-convert=on または -d2m の変換時)
-extract-chunks=off -d2mで動画ファイルに書き出す(デフォルト)
-extract-chunks=on -d2mで各々のチャンクを書き出す
-conv-ext=mp4 変換時の出力の拡張子を.mp4とする(デフォルト)
-conv-ext=ts 変換時の出力の拡張子を.tsとする
  • FORMATで指定可能な変数一覧
?PID? ProgramId。lv1234567のような文字列。
?UNAME? ユーザ名。公式の場合、"official"
?UID? ユーザID。nicovideo.jp/user/に続く数字の列。公式の場合、"official"
?CNAME? コミュニティ名。公式の場合、"official"
?CID? コミュニティID。co1234のような文字列。公式の場合、"official"
?TITLE? 放送タイトル。
?YEAR? 年4桁。開場ではなく開演時刻。以下同じ
?MONTH? 月2桁
?DAY? 日2桁
?DAY8? 年4桁,月2桁,日2桁: "20180901"
?DAY6? 年2桁,月2桁,日2桁: "180901"
?HOUR? 時2桁
?MINUTE? 分2桁
?SECOND? 秒2桁
?TIME6? 時2桁,分2桁,秒2桁
?TIME4? 時2桁,分2桁

初めて実行する場合(ニコニコ生放送のアカウント設定)

ニコニコ生放送に関しては、ほとんどの場合、ログインが必須であるため、
-nico-login id,password オプションにてニコニコのIDとパスワードを設定して下さい。
(ログイン不要の番組の録画についてはこのオプションは不要)
IDとパスワード、及びクッキー(セッション)は設定ファイルに保存されるため、1度-nico-loginを指定した後は、指定不要です。

例(コマンドプロンプト):

livedl -nico-login "test@example.com,password" lv333333333

例(Powershellbash(sh)):
必ずシングルクオーテーションで囲ってください

livedl -nico-login 'test@example.com,password' lv333333333

2回目以降(ニコニコ生放送

アカウント情報の指定は不要です。

livedl lv333333333

ニコニコ生放送の録画データについて

20180525.12以降では、データベース(sqlite3)に保存されます。

20180601.14以前では、
HTML5に対応した放送を録画した場合、ZIPファイル保存されます。
ZIPファイルからmp4に変換可能です。

RTMP形式で録画した場合、FLVで保存されます。

 

ツイキャスの録画

livedl https://twitcasting.tv/XXXXX

または -tcas オプションを指定して、

livedl -tcas XXXXX

放送が終了した後からN「秒」ごと(-tcas-retry-intervalで指定)に配信が再開されてないかチェックすることができます。M「分」(-tcas-retry-timeoutで指定)以上経過しても開始されない場合チェックを終了してプログラムを終了します。

オプション(ツイキャス

オプション                  設定保持 説明
-tcas-retry=on 録画終了後に再試行を行う
-tcas-retry=off 録画終了後に再試行を行わない(デフォルト)
-tcas-retry-timeout 再試行を開始してから終了するまでの時間(分)。 -1で無限ループ。デフォルト: 5分
-tcas-retry-interval 再試行を行う間隔(秒)デフォルト: 60秒

YouTube Liveの録画

オプション(Youtube

オプション                  設定保持 説明
-yt-api-key YouTube Data API v3 keyを設定する(未使用)
-yt-no-streamlink=on Streamlinkを使用しない
-yt-no-streamlink=off Streamlinkを使用する(デフォルト)
-yt-no-youtube-dl=on youtube-dlを使用しない
-yt-no-youtube-dl=off youtube-dlを使用する(デフォルト)

ツールの優先順位は、streamlink ➡ youtube-dlです。

基本的な録画方法

livedl https://www.youtube.com/watch?v=XXXXX

または -ytオプションを指定して、

livedl -yt XXXXX

youtubeツイキャスの録画に使用します。

streamlinkのwindows版ビルドは例えば以下から入手できます。
https://github.com/streamlink/streamlink-portable/releases

livedlフォルダにstreamlinkというフォルダを作成し、
Streamlink_for_Windows_Portable_vXXXXX.zip
の中身を全てstreamlinkフォルダに入れてください。

livedlのフォルダ内に、以下のいずれかのように配置するか、パスを通っていれば良いです。

  • bin/streamlink/streamlink.exe
  • bin/streamlink.exe
  • streamlink/streamlink.exe
  • streamlink.exe

youtube-dl のダウンロードと配置

streamlinkでは録画できないyoutube liveもあるようなので、
youtube-dlという録画ツールを利用するようにします。

https://youtube-dl.org/
上のURLから、youtube-dl.exeをダウンロードして、
livedl.exeと同じ場所に置いてください。(bin/以下などでもいいです)

zipまたはデータベース(sqlite3)からmp4に変換する方法

まずは必要な外部ツールをダウンロード、解凍して配置します。


ffmpeg が必要なので、livedlと同じ場所または bin/ ディレクトリの下に ffmpeg(.exe) を配置して下さい。
またはシステムへインストールして下さい。

Download FFmpeg


さらに、YouTuve Live等を録画したzipの変換では、mp42ts が必要*1なので、
livedlと同じ場所または bin/ の下に mp42ts(.exe) を配置して下さい。

Downloads | Bento4

上記ができたら、以下のようにzipファイル名を指定して実行して下さい。

livedl 録画済み.zip
livedl 録画済み.sqlite3

または

livedl -z2m 録画済み.zip
livedl -d2m 録画済み.sqlite3

途中のデータに欠けがある場合は、別ファイル名での変換を開始して最後まで継続します。

今後の対応

優先度高

  • 原因不明(多分ネットワークではない)でシーケンスが抜ける問題の調査
  • YoutubeLiveのコメント取得

TODOリスト

  • コメントのvposを合わせる
  • GUIをどうにかしたい
  • 結合時に、大体〇MB毎に分割するもしくはzipに書き出す(もしくはフォルダにそのまま保存)
  • タイムシフト進捗%表示
  • YouTubeライブの保存ファイル名を指定できるようにして欲しい
  • YouTubeライブの録画ファイルに不具合を伴う件の調査
  • Youtube liveで配信途中からでも冒頭まで遡って取得したい。(Streamlinkの--hls-live-restartは超低遅延モードだと機能しない)
  • sqlite3からの変換先を別のディスク、フォルダにしたい
  • YoutubeLIVEでも無限に監視するオプションが欲しい
  • ニコ生のタイムシフトでコメントファイルだけを出力できるオプションがほしい
  • openTimeではなくbeginTimeから録画したい

既知の問題

  • ニコ生録画中に落ちることがある

(github.com/himananiito/livedl/issues/1) が原因で落ちる問題は修正しました。
(github.com/himananiito/livedl/issues/6) が原因で落ちる問題は修正しました。

  • ニコ生の旧配信録画(Flash/RTMP形式)でエラーが出る

Please retry: RTMP: decodeUserControl: Unknown User control: 2048(←番号は問いません)
RTMPで予期しないデータが現れたため続行できないことを示しています。
ツールの実装上の問題なのか、本当にデータがおかしいのか判明していません。

よくある質問

  • 起動制限は?

本ツールの起動数の制限はありません。配信サイトからアクセス規制その他になっても責任は取れないので、常識的な範囲でご使用ください。

以下を試して下さい。

0. 対象のsqlite3ファイルがあれば削除する。
1. チャンネル会員のアカウントを設定
GUI(livedl-gui.exe)の上の入力欄に、(またはコマンドのオプション)
 -nico-login "test@example.com,password"
(ログインメールアドレスに続けて半角でコンマ、続けてパスワード)
と打ち込んでStartを押すことでアカウントの設定が完了します。

2. ログイン状態での録画を確実にするために、
 -nico-login-only=on
と打ち込んでStartを押してください。

3. 同様に-nico-fast-ts=onで倍速ダウンロードできます。
4. 放送IDを入れてStartして下さい


あるいは、-nico-rtmp-onlyオプションをつけるか、kakorokuRecorderでできる可能性があります。

ニコニコへの負荷対策

ニコニコの開発より、負荷がかからないようにして欲しいと言われたので対応していきます。

  • User-Agentヘッダにlivedlを設定
  • バージョン(20180722.20より後)から、新配信のタイムシフト録画はデフォルトで等倍速となります。
  • バージョン(20180722.20より後)から、新配信のタイムシフト録画の倍速モードでもウェイトが入ります。

他のニコ生録画ツール

私が関与してませんが、こちらも試してみると良いかもしれません。

  • ニコ生新配信録画ツール(仮

com.nicovideo.jp

  • namaroku

http://dic.nicovideo.jp/b/c/co310049/8581-#8589

本ツールに関するコメント

  • ✅ バグや要望など修正が必要な可能性がある場合は可能であればgithubのissueに上げてもらえると助かります。
  • githubアカウントがない場合や、その他のコメントはブログコメント(匿名可)・メール(himananiito@yahoo.co.jp)・Twitter(@himananiito)でも🆗です。
  • ✅ 録画でエラーとなる場合は検証のため該当の放送ID(lv12345678またはURL)も記載して下さい
    • 特にニコ生のタイムシフトの場合。放送によらない場合は不要です。
  • ログをコメントに書く場合はIPやユーザー情報は削除してから書き込んで下さい。
  • よくわからない場合はログはメールにて送って下さい。

*1:映像と音声を結合する前にMPEG-TSに変換することで若干変換速度が速くなるため