yt-dlp は、YouTube をはじめとする多数の動画サイトから動画や音声をダウンロードできるコマンドラインツールです。youtube-dl をベースに改良されており、より多くのサイト対応・高速化・便利なオプションが追加されています。
ターミナルで動くことが前提のツールなので、黒い画面に苦手意識がある方は 「ターミナルは怖くない」や、「Bash」で基本的な使い方などを理解できているのが前提の解説になります。
構文(Syntax)
yt-dlp [オプション] <URL>
yt-dlp のオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
<URL> | ダウンロードする動画のURLを指定 | yt-dlp https://youtu.be/abc123 |
-F | 利用可能なフォーマット一覧を表示 | yt-dlp -F https://youtu.be/abc123 |
-f FORMAT | ダウンロードするフォーマットを指定 | yt-dlp -f 22 https://youtu.be/abc123 |
-o TEMPLATE | 保存ファイル名を指定 | yt-dlp -o "%(title)s.%(ext)s" URL |
-x | 音声のみ抽出 | yt-dlp -x https://youtu.be/abc123 |
--audio-format mp3 | 音声を特定形式に変換 | yt-dlp -x --audio-format mp3 URL |
--playlist-items ITEM_SPEC | プレイリストの特定アイテムだけ取得 | yt-dlp --playlist-items 1,3,5 URL |
--download-archive FILE | ダウンロード済みを記録して重複防止 | yt-dlp --download-archive archive.txt URL |
--merge-output-format FORMAT | 動画と音声を結合するときの形式指定 | yt-dlp -f "bestvideo+bestaudio" --merge-output-format mp4 URL |
-P PATH | 保存先ディレクトリを指定 | yt-dlp -P ./downloads URL |
yt-dlp のインストール方法
yt-dlp は Python 製のツールなので、環境によっていくつかの導入手順があります。
以下では代表的な方法を紹介します。
1. pip(Python パッケージ)でインストール
最も標準的で推奨される方法です。Python3 が入っていれば利用できます。
# インストール
pip install -U yt-dlp
# インストール確認
yt-dlp --version
-U を付けることで最新版にアップデートも行えます。
2. バイナリ(単体ファイル)を使う
Python 環境を準備したくない場合は、配布されている単体バイナリを利用できます。
# Linux / macOS
wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp
chmod a+rx yt-dlp
sudo mv yt-dlp /usr/local/bin/
# Windows(PowerShell)
Invoke-WebRequest https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe -OutFile yt-dlp.exe
ダウンロードしたファイルをそのまま実行できます。
例:./yt-dlp <URL> または yt-dlp.exe <URL>
3. Homebrew(macOS / Linux)
Homebrew を利用している場合は次の方法で導入できます。
brew install yt-dlp
4. Scoop(Windows)
Windows で Scoop を使う場合は以下。
scoop install yt-dlp
5. 更新方法
- pip インストール版
pip install -U yt-dlp - バイナリ版
yt-dlp -U(自己アップデート機能で最新版を取得)
補足
- FFmpeg が必要な機能(音声抽出・結合など)も多いため、あわせてインストールしておくと便利です。
- Windows の場合、
yt-dlp.exeをPATHが通ったディレクトリ(例:C:\Windows\System32)に置くとどこからでも実行できます。
手軽に始めたいなら バイナリ版、普段から Python を使うなら pip 版が便利です。
yt-dlp 実行例
基本的な動画ダウンロード
yt-dlp https://youtu.be/abc123
利用可能なフォーマットを確認
yt-dlp -F https://youtu.be/abc123
出力例:
format code extension resolution note
249 webm audio only tiny 50k , opus @ 50k
140 m4a audio only medium 128k , m4a
18 mp4 360p small
22 mp4 720p hd720
特定フォーマットを指定してダウンロード
yt-dlp -f 22 https://youtu.be/abc123
音声のみを MP3 で保存
yt-dlp -x --audio-format mp3 https://youtu.be/abc123
保存ファイル名をカスタマイズ
yt-dlp -o "%(title)s.%(ext)s" https://youtu.be/abc123
プレイリストの一部だけダウンロード
yt-dlp --playlist-items 1,3,5 https://youtube.com/playlist?list=xyz
既にダウンロードした動画をスキップ
yt-dlp --download-archive archive.txt https://youtu.be/abc123
エラー例(存在しない動画URL)
yt-dlp https://youtu.be/notfound
出力例:
ERROR: [youtube] notfound: Video unavailable
yt-dlp 画質指定
まずは実行できるサンプルコードがこちら
# 最高画質 分離ストリーム優先 → まとめて1ファイルに
yt-dlp -f "bv*+ba/b" --remux-video mp4 "URL"
# 1080p上限
yt-dlp -f "bv*[height<=?1080]+ba/b[height<=?1080]" --remux-video mp4 "URL"
# 720p上限
yt-dlp -f "bv*[height<=?720]+ba/b[height<=?720]" --remux-video mp4 "URL"
# H.264優先
yt-dlp -f "bv*[vcodec~=^avc1][height<=?1080]+ba[acodec~=^mp4a]/b[ext=mp4][height<=?1080]" --remux-video mp4 "URL"
# 音声のみ m4a
yt-dlp -f "bestaudio[ext=m4a]/bestaudio" -x --audio-format m4a "URL"
画質について変更する場合には ffmpeg が必要になるので、あらかじめインストールしておいてください。
-f 基本の考え方
- まず
yt-dlp -F "URL"で配信側が用意しているフォーマット一覧(ID・解像度・コーデック等)を確認。 -fはその一覧から 「どれを取るか」 を指定する仕組みです。- 典型は 映像と音声を別々に選んで結合(
video + audio)、ダメなら 一体型へフォールバック(/)という流れ。
書式の全体像
-f "<selector>[/<fallback>[/<fallback>...]]"
<selector>… 取りたい形式を表す“選択子”/で区切ると 上から順に試して、無ければ次へ(フォールバック)
選択子の種類
1) フォーマットIDを直指定
-f 137+140 # 例:137(映像)+ 140(音声)
-Fで見えた format_id をそのまま使う。確実だが都度 ID を調べる必要あり。
2) ショートハンド
best # そのサイトで“最良”と判定された単体(映像+音声一体型ならそれ)
worst
bestvideo # 映像だけの最良
bestaudio # 音声だけの最良
worstvideo / worstaudio
- 組み合わせて使うのが実務では便利:
-f "bestvideo+bestaudio/best"まずは分離ストリームの最良同士を結合、無ければ一体型の最良。
3) 角括弧のフィルタ(条件指定)
選択子の末尾に [key OP value] を重ねて、条件で絞り込みます(複数可)。
主なキー(よく使うもの)
ext(コンテナ拡張子: mp4, webm など)vcodec/acodec(映像/音声コーデック: avc1, h264, vp9, av01, mp4a など)height,width,fpstbr(総ビットレート, kbps 相当),vbr,abrfilesize/filesize_approx(単位はK,M,G可)language,proto(http, https, m3u8 など)
演算子
=,!=,<,<=,>,>=- 文字列向け:
^=(前方一致),$=(後方一致),*=(部分一致),~=(正規表現) - 安全比較(値が不明でも落とさない):比較記号の直後に
?
例:[height<=?1080]… 高さが不明なら“合格扱い”にする
使用例
# 1080p 以内
-f "bestvideo[height<=?1080]+bestaudio/best[height<=?1080]"
# H.264(AAC) を優先(古い再生環境向け)
-f "bestvideo[vcodec^=avc1][height<=?1080]+bestaudio[acodec^=mp4a]/best[ext=mp4]"
# 60fps 以上に限定(上限1080p)
-f "bestvideo[fps>=60][height<=?1080]+bestaudio/best[height<=?1080]"
# ファイルサイズを 800MB 未満に(※サイズ情報がない配信では効かない)
-f "bestvideo[filesize<=800M]+bestaudio/best[filesize<=800M]"
合体(+)とフォールバック(/)
+… 複数の形式を同時に選んで結合(主に「映像だけ」+「音声だけ」)/… 無かった時の代替を順に書く
実務の定番:
yt-dlp -f "bestvideo+bestaudio/best" --remux-video mp4 "URL"
- まずは分離ストリームの最良同士を取り、ffmpeg で結合
- 分離が無い/結合不可なら 一体型の最良へ
--remux-video mp4は再エンコード無しで MP4 に詰め替え(速くて劣化なし)
変換まで強制したいなら
--recode-video mp4(再エンコードあり)
-f と -S(ソート)を組み合わせる
-f は“どのグループから選ぶか”“条件で除外するか”が得意、
どれを優先的に選ぶかの細かな好みは -S(--format-sort)が得意です。
例:解像度 → fps → コーデック(H.264 を優先)→ ビットレートの順で最良を選びたい
yt-dlp -S "res,fps,codec:avc1,tbr" -f "bestvideo+bestaudio/best" --remux-video mp4 "URL"
- まず
-Sで並べ替え →-fの先頭候補が自然に“望む最良”になる - “とにかく MP4 がいい”なら
-S "ext:mp4:m4a,res,fps"なども
よくあるつまずき
- 結合に ffmpeg が必要:
sudo apt install -y ffmpeg - 条件が厳しすぎてヒットゼロ:
[height<=1080]→<=?1080のように 安全比較を使う - MP4 が出てこない:
--remux-video mp4(詰め替え)か、無理なら--recode-video mp4 - サイズ制限が効かない:配信側がサイズ未提供だと
filesize条件は機能しません
ミニチートシート
best / worst / bestvideo / bestaudio
[height<=?1080] [fps>=60] [ext=mp4]
[vcodec^=avc1] [acodec^=mp4a]
[filesize<=800M]
video+audio / fallback with "/"-F で現物を見て → 上の部品を組み合わせれば、狙い通りの“画質・互換・サイズ”で安定して落とせます。
もし「このURLで“厳密に 1080p・H.264・m4a・サイズ<1GB”」のようなピンポイント条件があれば、その URL を前提に最適な -f 式を作って渡します。
yt-dlp ダウンロード対応の動画/音声サイト
ざっくり言うと、対応サイトの“正式な一覧”は公式の supportedsites.md にまとまっています(数千サイト対応)。最新はここで確認できます。
よく使われる代表例
- YouTube
- Vimeo
- SoundCloud
- Twitch
- X(旧Twitter)
- TikTok
- Bilibili
- ニコニコ動画
など、メジャーどころは広く対応しています(完全版は公式の supportedsites.md 参照)。 GitHub
うまくいくかの簡易チェック
対応リストから探すよりも、実際にコマンドを打つことで対応しているかが確認できます。
# 実際にダウンロードせず、取得可否だけ確認
yt-dlp -s <URL>
# 取得可能なフォーマット一覧を確認
yt-dlp -F <URL>
(-F/--list-formats は各サイトごとの対応フォーマットを確認するのに便利です。) PyPI
注意:DRM付き配信や海賊版サイトは非対応だったり、利用規約に反するダウンロードは違法になる場合があります。合法かつ規約に従って使ってください。最近は「海賊版用途が主」と判断されたサイトがサポート外と明言されるケースもあります。 The FreeBSD Forums
よくある質問
Q. Yt-dlpとは何ですか?
yt-dlp は、動画配信サイトからのダウンロードやメタデータ抽出を行うコマンドラインツールです。元祖の youtube-dl をフォークしており、対応サイトの多さ・更新の速さ・高度なオプション(字幕・サムネ・チャプター・プレイリスト一括取得、リマックス/再エンコード制御 など)が特徴です。
基本形は次の通りです。
# 単体動画
yt-dlp <URL>
# プレイリストをまとめて
yt-dlp -o "%(playlist_index)s-%(title)s.%(ext)s" <PLAYLIST_URL>
# 字幕・サムネ・説明文も保存
yt-dlp --write-subs --sub-langs all --embed-subs \
--embed-thumbnail --write-description --write-info-json <URL>
Q. Yt-dltとは?
yt-dlt はしばしば見かける誤記です。正式名称は yt-dlp。
関連用語として、フォーク元の youtube-dl(更新が緩やか)や、GUI フロントエンドの yt-dlg(後述)があります。
Q. Yt-dlpでTVerをダウンロードできなくなったのはなぜですか?
代表的な原因は次のとおりです(複数が同時に絡むこともあります)。
- サイト側の仕様変更
再生ページ構造やトークン取得手順が変わると、旧バージョンのyt-dlpは失敗します。
→ まずは最新版へ更新してください。yt-dlp -U # 自己更新(配布形態によっては権限が必要) # あるいは pip install -U yt-dlp - DRM(著作権保護)による暗号化
TVer では作品や時期により Widevine などの DRM が用いられる場合があり、
DRM 付き配信はyt-dlpではダウンロードできません(技術的・法的に非対応)。 - ログイン・地域・年齢制限
アカウント必須や 日本国内限定(ジオブロック) のケースがあります。
ブラウザ Cookies を渡すと解決することがあります。# 既定ブラウザのCookieを取り込む(Chrome/Edge/Firefox等) yt-dlp --cookies-from-browser chrome <TVerのURL> # 詳細ログで原因を確認 yt-dlp -Uv <TVerのURL> - 広告スキームやセグメント取得方法の変更
HLS(M3U8) の取得手順や署名付きURLの挙動が変わると失敗します。
バージョン更新・時間を置いた再試行・Issueでの進捗確認が必要になることがあります。
注意:配信サービスの利用規約・著作権法に必ず従ってください。
視聴目的の範囲を超える保存やDRM回避は法律・規約に抵触する可能性があります。
Q. Yt-dlgとは何ですか?
yt-dlg(「YouTube-DL GUI」)は、yt-dlp/youtube-dl をボタン操作で使えるGUIフロントエンドです。
ダウンロード先のテンプレート、画質や字幕の選択、キュー管理などを画面から設定できます。
「コマンドは苦手だが yt-dlp の機能を使いたい」という場合に役立ちます。
関連コマンド
youtube-dl: 元になったツール(開発停滞中)。ffmpeg: 動画や音声の変換で併用されることが多い。
備考
yt-dlpはpipやパッケージマネージャ(brew install yt-dlp,apt install yt-dlp)で導入可能。- ほとんどの処理に ffmpeg が必要なため、インストールしておくと便利。
- ダウンロード対象によっては利用規約に違反する可能性があるため、利用は自己責任で行う必要があります。
コメント