メインコンテンツへスキップ

yt-dlp を aria2 で高速化

yt-dlp がストリーム URL・Cookie・ヘッダーを取得し、aria2c がファイルあたり最大 16 本の並列接続でデータを取得します。CDN に絞られた単一ソケットが、帯域を使い切るパイプに変わります。本ガイドは、導入手順・最適化・自動化・確認・トラブルシューティングまでを網羅した実践的なリファレンスです。

最終確認 2026-09 · aria2 v1.37.0 · yt-dlp 2024+ と ffmpeg が必要

はじめる前に

ダウンロードする権利のあるコンテンツのみを扱ってください。 各サイトの利用規約と著作権法を遵守してください。

仕組みと効果の範囲

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 から始め、拒否される場合は下げてください。

状況別の推奨 aria2 設定
状況-x-s-k補足
高速な自宅回線 / VPS(500 Mbps+)16161M最大スループット
一般的なブロードバンド881Mバランス良好、ブロックが少ない
厳格な CDN / 403 や 429 が多い442Mスクレイパーに見えにくい
プレイリストで項目が多い16161Maria2 -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 の設定ファイルへ記述します。

yt-dlp 設定(1 行に 1 フラグ)
--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"

トラブルシューティング

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。

ダウンロードする権利のあるコンテンツにのみ使用してください。