yt-dlp を aria2 で高速化
yt-dlp がストリーム URL・Cookie・ヘッダーを取得し、aria2c がファイルあたり最大 16 本の並列接続でデータを取得します。CDN に絞られた単一ソケットが、帯域を使い切るパイプに変わります。本ガイドは、導入手順・最適化・自動化・確認・トラブルシューティングまでを網羅した実践的なリファレンスです。
最終確認 2026-09 · aria2 v1.37.0 · yt-dlp 2024+ と ffmpeg が必要
はじめる前に
- aria2 がインストールされ
PATHが通っている –aria2c --versionで確認。 - yt-dlp がインストールされ最新である –
yt-dlp --versionで確認。 - ffmpeg がインストールされている(映像と音声の結合・コンテナ変換に必要)。
- ターミナル(Cmd/PowerShell、ターミナル、Bash)と十分な空き容量。
ダウンロードする権利のあるコンテンツのみを扱ってください。 各サイトの利用規約と著作権法を遵守してください。
仕組みと効果の範囲
yt-dlp はリゾルバーです。サイトと交渉してストリーム形式を選び、正確なリクエスト(URL・Cookie・ヘッダー・バイト範囲)を生成します。aria2c は転送エンジンで、1 つのホストに多数のソケットを開き、チャンクを並列に取得します。組み合わせることで、yt-dlp の正確さと aria2 のスループットを両立できます。
aria2 が大きく効く場面
- 直接の HTTP(S) メディアファイル(大きな動画・音声を 1 ファイルで取得)
- 映像と音声が別々の完全なファイルとして配信される YouTube 型 DASH
- 高速回線(500 Mbps 以上)での数 GB の 4K/8K ダウンロード
- 単一 TCP 接続は絞るがバイト範囲リクエストは多く許可するサーバー
aria2 が効かない場面
- ライブ配信(ファイル長が固定でない)
- 断片化された HLS/DASH(数千の小さなセグメント)– yt-dlp のネイティブ/ffmpeg ダウンローダーを使い
-Nで調整 - 並列範囲を明示的に拒否するサーバー(403/429 が出る –
-xを下げる)
目安: yt-dlp がサイズ既知の単一 Destination を表示するなら aria2 が加速します。数百の細かい断片を表示するなら -N 8 を使い、そのジョブでは外部ダウンローダーを使わないでください。
インストールと更新
yt-dlp はサイトの変更に追従するため非常に頻繁に更新されます。古いビルドが突然の失敗の最大の原因です。
# aria2 sudo apt install aria2 # Debian/Ubuntu brew install aria2 # macOS winget install aria2.aria2 # Windows(または scoop install aria2) # ffmpeg(映像と音声の結合に必要) sudo apt install ffmpeg brew install ffmpeg winget install Gyan.FFmpeg # yt-dlp - 単体バイナリ(推奨)、その後自己更新 yt-dlp -U # yt-dlp - Python/pip 経由(更新は pip で、-U ではなく) python -m pip install -U yt-dlp
すべて PATH にあることを確認します:
aria2c --version && yt-dlp --version && ffmpeg -version
クイックスタート(1 コマンド)
--downloader でダウンロードを aria2 に渡し、aria2 のフラグは aria2c: プレフィックスを付けて --downloader-args で渡します:
yt-dlp --downloader aria2c --downloader-args "aria2c:-x 16 -s 16 -k 1M" "URL"
フラグの意味
--downloader aria2c– HTTP(S) ダウンロードに外部ダウンローダー aria2c を使用(旧 youtube-dl の--external-downloaderに相当。yt-dlp での正式名は--downloader)。--downloader-args "aria2c:…"–aria2c:以降がそのまま aria2c プロセスに渡されます。-x 16=--max-connection-per-server=16(ホストごとのソケット数)-s 16=--split=16(ファイルを 16 分割)-k 1M=--min-split-size=1M(小さいファイルでの接続の入れ替わりを防ぐ)
yt-dlp は Cookie・User-Agent・必要なヘッダーを aria2c に自動転送するため、署名付き URL も機能し続けます。
動作確認: --verbose を付け、aria2c の呼び出しと進捗行を確認します(確認と監視参照)。
yt-dlp + aria2 コマンドジェネレーター
オプションを選ぶと、そのまま実行できるコマンドを生成します。
yt-dlp --downloader aria2c --downloader-args "aria2c:-x 16 -s 16 -k 1M" -f "bestvideo+bestaudio/best" --merge-output-format mkv --embed-subs --embed-chapters "URL"
接続数と分割の調整
単一ファイルに対し、aria2 は min(split, max-connection-per-server) 本まで接続を開きます。16 から始め、拒否される場合は下げてください。
| 状況 | -x | -s | -k | 補足 |
|---|---|---|---|---|
| 高速な自宅回線 / VPS(500 Mbps+) | 16 | 16 | 1M | 最大スループット |
| 一般的なブロードバンド | 8 | 8 | 1M | バランス良好、ブロックが少ない |
| 厳格な CDN / 403 や 429 が多い | 4 | 4 | 2M | スクレイパーに見えにくい |
| プレイリストで項目が多い | 16 | 16 | 1M | aria2 -j(並列数)は慎重に上げる |
# プレイリスト向け: 並列ファイルを 4 に抑え、再試行を追加 yt-dlp --downloader aria2c \ --downloader-args "aria2c:-x 16 -s 16 -k 1M -j 4 --retry-wait=3 --max-tries=5" \ "PLAYLIST_URL"
断片化ストリーム(HLS/DASH)は別経路です。aria2 を使わず、yt-dlp 自身の並列断片数を -N 8 で増やします(例: yt-dlp -N 8 URL)。
フォーマット選択と結合
yt-dlp は映像と音声を別々にダウンロードし、ffmpeg で結合します。これは aria2 とは独立です(各トラックが単一ファイルなら aria2 がそれぞれを加速します)。
# 最高画質、MKV に変換 -f "bestvideo+bestaudio/best" --merge-output-format mkv # 最高音声を保ったまま解像度を制限 -S "res:1080" -f "bv*+ba/b" # 音声のみ(ffmpeg で MP3 へ) -x --audio-format mp3 --audio-quality 0 # まず利用可能な形式を一覧表示 -F URL
-S(ソート)はハードコードした -f フィルタより概してきれいです。--merge-output-format には ffmpeg が必要です。
恒久設定
毎回フラグを打つ代わりに、yt-dlp の設定ファイルへ記述します。
- Linux / macOS:
~/.config/yt-dlp/config - Windows:
%APPDATA%\yt-dlp\config - ポータブル(バイナリの隣):
yt-dlp.conf
--downloader aria2c --downloader-args "aria2c:-x 16 -s 16 -k 1M --file-allocation=falloc --retry-wait=3 --max-tries=5" -f "bestvideo+bestaudio/best" --merge-output-format mkv --embed-metadata --embed-chapters --embed-thumbnail -o "%(title)s [%(id)s].%(ext)s"
Windows の引用符: aria2c: 値の二重引用符は必須です。PowerShell ではそのままで動作します。設定ファイルでは上記のように二重引用符をそのまま使います。
実践レシピ
実際によく使うタスクのコピー可能な出発点です。
再取得なしでプレイリスト/チャンネル全体を取得
yt-dlp --downloader aria2c \ --downloader-args "aria2c:-x 16 -s 16 -k 1M -j 3" \ --download-archive archive.txt \ -o "%(playlist_title)s/%(playlist_index)s - %(title)s.%(ext)s" \ "PLAYLIST_URL"
非公開 / 年齢制限付き動画(Cookie)
yt-dlp --cookies-from-browser firefox \ --downloader aria2c --downloader-args "aria2c:-x 16 -s 16 -k 1M" "URL" # または以前エクスポートした Netscape 形式 cookies.txt yt-dlp --cookies cookies.txt ... "URL"
プロキシ経由で接続
yt-dlp --proxy "http://127.0.0.1:8080" \ --downloader aria2c \ --downloader-args "aria2c:--all-proxy=http://127.0.0.1:8080 -x 8 -s 8" "URL"
プロキシは yt-dlp(メタデータ)と aria2(本体)の両方に設定します。aria2 は HTTP プロキシのみ対応のため、SOCKS5 の場合は yt-dlp にそのまま指定し、aria2 にはローカルの HTTP→SOCKS 変換プロキシ(privoxy、gost)を指定してください。
回線を飽和させないよう帯域を制限
yt-dlp --downloader aria2c \ --downloader-args "aria2c:-x 8 -s 8 --max-download-limit=5M" "URL" # または yt-dlp/aria2 全体を制限 yt-dlp -r 5M --downloader aria2c --downloader-args "aria2c:-x 8 -s 8" "URL"
一部分・字幕・サムネイル・メタデータ・SponsorBlock
# 5 分間の切り出し yt-dlp --download-sections "*10:15-15:00" ... "URL" # 字幕 + サムネイル + メタデータを埋め込み yt-dlp --write-subs --sub-langs "en.*" --embed-subs \ --embed-thumbnail --embed-metadata --embed-chapters ... "URL" # スポンサー区間を削除(ffmpeg 必須) yt-dlp --sponsorblock-remove sponsor ... "URL"
URL リストを一括処理
yt-dlp --downloader aria2c --downloader-args "aria2c:-x 16 -s 16 -k 1M -j 3" \ --batch-file urls.txt
確認と監視
aria2 が実際にダウンロードしていることを確認します:
yt-dlp --verbose --downloader aria2c \ --downloader-args "aria2c:-x 16 -s 16 -k 1M --summary-interval=5" "URL"
--verboseが実際に呼び出される aria2c のコマンドラインを表示します。- aria2 は独自の複数行進捗(複数接続、5 秒ごとのサマリー)を出力します。
- yt-dlp は最後の
Destinationと ffmpeg の結合手順も表示します。
トラブルシューティング
HTTP 403 Forbidden / aria2 がコード 1・3・9 で終了
原因: CDN の URL は短命な署名付きリンク、または多数の並列接続や非ブラウザの User-Agent を嫌がっている。
解決: yt-dlp を更新(yt-dlp -U)、-x 8 -s 8 に下げ、--cookies-from-browser で Cookie を渡す。yt-dlp はヘッダーを自動転送するため、サイトが要求しない限り User-Agent は上書きしない。
「external downloader ... not installed」/ aria2c が見つからない
原因: aria2c が PATH にない、または yt-dlp が見つけられない。
解決: aria2 を導入(インストール参照)。Windows では aria2c.exe を yt-dlp.exe の隣に置くか、フォルダーを Path に追加してターミナルを再起動。
小さな断片のフォルダーになる / 非常に遅い
原因: 断片化された HLS/DASH ストリームで、aria2 は加速できない。
解決: そのジョブでは外部ダウンローダーを使わず、yt-dlp のネイティブ断片を使う: yt-dlp -N 8 URL。
HTTP 429 Too Many Requests
原因: 短時間に接続/リクエストが多すぎる。
解決: -j と -x を下げ、--sleep-requests 1 を追加し、並列項目を抑える。
結合/変換に失敗、または音声のない出力
原因: ffmpeg が無い、または選択したコンテナがコーデックに非対応。
解決: ffmpeg を導入し ffmpeg -version で確認。mp4 ではなく最も寛容な --merge-output-format mkv を使う。
ライブ配信が終わらない
原因: ライブは固定サイズがない。aria2 は来ない Content-Length を待ち続ける。
解決: ライブでは aria2 ダウンローダーを使わず、yt-dlp の既定を使う(対応していれば --live-from-start で先頭から録画)。
Windows: 「aria2c:-x is not recognized」/ 引数が無視される
原因: シェルのクォートで aria2c: の値が分割された。
解決: 値を二重引用符で囲む: --downloader-args "aria2c:-x 16 -s 16 -k 1M"。PowerShell では一重と二重の引用符を混在させない。
FAQ
16 接続は常に有利ですか?
いいえ。回線容量を超えると追加接続はオーバーヘッドになり、レート制限を招きます。8 が安全な既定で、厳しいサーバーでは 4 に下げます。
YouTube のプレイリストやチャンネルでも使えますか?
はい。aria2 が各トラックを並列に取得します。--download-archive で再取得を防ぎ、-j は控えめにしてスロットリングを避けます。
ログ用に yt-dlp --newline と併用できますか?
はい – --newline は yt-dlp の進捗表示だけを変え、外部ダウンローダーには影響しません。
ダウンロード先はどこですか?
カレントディレクトリ、または -P/-o が指す場所です。例: -P ~/Downloads。
関連リソース
- aria2 ツール – WebUI、トラッカーリスト、設定ジェネレーター
- オプションリファレンス – 本ガイドで使う aria2 フラグの解説
- 速度最適化ガイド – ディスク、キャッシュ、BitTorrent の調整
- トラブルシューティング – よくある aria2 のエラーと具体的な対処
- aria2 ドキュメント – インストール、プロトコル、RPC など
ダウンロードする権利のあるコンテンツにのみ使用してください。