livedl - 新配信(HTML5)に対応したニコ生録画ツール。他サイトにも対応
livedl - 新配信(HTML5)に対応したニコ生録画ツール。他サイトにも対応
お知らせ(2019/1/2)
- ⚡livedlは大部分を作り直してlivedl2に移行予定です。
- livedl2のブランチ
- 以下からwin64用ビルドが試せます。
- 初めのうちは実験放送と新配信(ユーザ)の対応となります。
- 現状のタイムシフトでセグメント抜けるのはたぶん直る予定。
- RTMPの対応は切ります。
- コンソールツール➡WebUIツールになります(Gin, Bootstrap4)
はじめに
- このページでは、livedlの使い方について説明します。
- ニコ生新配信録画ツール(仮(KakkoKari) をお探しの方は、以下のニコニココミュニティです。
- livedlで録画できない場合などは「(仮」も併せて試して下さい。
以下では、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です。
基本的な使い方
- 左上の入力欄に、放送URLまたは.zip/.sqlite3ファイル名及び必要であればオプションを入力
- 右上のStartボタンを押す
- 途中で止める場合はStopボタンを押す
その他の使い方
その他の説明
- 放送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/データベース ファイルの最終処理ができません。
(備考)設定ファイルについて
設定ファイルはログイン情報設定ファイルと一般オプション設定ファイルに保持されます
ログイン情報設定ファイルには、サイト(ニコニコ)のログイン情報が保持されます。
ログイン情報設定ファイルの場所は以下の優先度が最も高いものとなります。
- 環境変数 LIVEDL_DIR がある場合、$LIVEDL_DIR 直下の account.db
- 環境変数 APPDATA がある場合、$APPDATA/livedl/account.db
- 環境変数 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
例(Powershell、bash(sh)):
必ずシングルクオーテーションで囲ってください
livedl -nico-login 'test@example.com,password' lv333333333
ツイキャスの録画
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
streamlink のダウンロードと配置
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) を配置して下さい。
またはシステムへインストールして下さい。
さらに、YouTuve Live等を録画したzipの変換では、mp42ts が必要*1なので、
livedlと同じ場所または bin/ の下に mp42ts(.exe) を配置して下さい。
上記ができたら、以下のように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) が原因で落ちる問題は修正しました。
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でできる可能性があります。
ニコニコへの負荷対策
ニコニコの開発より、負荷がかからないようにして欲しいと言われたので対応していきます。
他のニコ生録画ツール
私が関与してませんが、こちらも試してみると良いかもしれません。
- ニコ生新配信録画ツール(仮
- namaroku
本ツールに関するコメント
- ✅ バグや要望など修正が必要な可能性がある場合は可能であればgithubのissueに上げてもらえると助かります。
- githubアカウントがない場合や、その他のコメントはブログコメント(匿名可)・メール(himananiito@yahoo.co.jp)・Twitter(@himananiito)でも🆗です。
- ✅ 録画でエラーとなる場合は検証のため該当の放送ID(lv12345678またはURL)も記載して下さい
- 特にニコ生のタイムシフトの場合。放送によらない場合は不要です。
- ログをコメントに書く場合はIPやユーザー情報は削除してから書き込んで下さい。
- よくわからない場合はログはメールにて送って下さい。