機能豊富なオーディオ/ビデオダウンローダー
yt-dlp は、YouTube をはじめとする多数の動画サイトから動画や音声をダウンロードできるコマンドラインツールです。youtube-dl をベースに改良されており、より多くのサイト対応・高速化・便利なオプションが追加されています。
ターミナルで動くことが前提のツールなので、黒い画面に苦手意識がある方は 「ターミナルは怖くない」や、「Bash」で基本的な使い方などを理解できているのが前提の解説になります。
目次- 構文(Syntax)
- yt-dlp のオプション一覧
- yt-dlp のインストール方法
- 1. pip(Python パッケージ)でインストール
- 2. バイナリ(単体ファイル)を使う
- 3. Homebrew(macOS / Linux)
- 4. Scoop(Windows)
- 5. 更新方法
- 補足
- yt-dlp 実行例
- 基本的な動画ダウンロード
- 利用可能なフォーマットを確認
- 特定フォーマットを指定してダウンロード
- 音声のみを MP3 で保存
- 保存ファイル名をカスタマイズ
- プレイリストの一部だけダウンロード
- 既にダウンロードした動画をスキップ
- エラー例(存在しない動画URL)
- yt-dlp 画質指定
- -f 基本の考え方
- 書式の全体像
- 選択子の種類
- 1) フォーマットIDを直指定
- 2) ショートハンド
- 3) 角括弧のフィルタ(条件指定)
- 主なキー(よく使うもの)
- 演算子
- 使用例
- 合体(+)とフォールバック(/)
- -f と -S(ソート)を組み合わせる
- よくあるつまずき
- ミニチートシート
- yt-dlp ダウンロード対応の動画/音声サイト
- よく使われる代表例
- うまくいくかの簡易チェック
- よくある質問
- Q. Yt-dlpとは何ですか?
- Q. Yt-dltとは?
- Q. Yt-dlpでTVerをダウンロードできなくなったのはなぜですか?
- Q. Yt-dlgとは何ですか?
- 関連コマンド
- 備考
- 参考
- 関連記事
構文(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 URLyt-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 unavailableyt-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)、ダメなら 一体型へフォールバック(/)という流れ。
- <selector> … 取りたい形式を表す“選択子”
- / で区切ると 上から順に試して、無ければ次へ(フォールバック)
- -F で見えた format_id をそのまま使う。確実だが都度 ID を調べる必要あり。
- 組み合わせて使うのが実務では便利: -f "bestvideo+bestaudio/best" まずは分離ストリームの最良同士を結合、無ければ一体型の最良。
選択子の末尾に [key OP value] を重ねて、条件で絞り込みます(複数可)。
主なキー(よく使うもの)- ext(コンテナ拡張子: mp4, webm など)
- vcodec / acodec(映像/音声コーデック: avc1, h264, vp9, av01, mp4a など)
- height, width, fps
- tbr(総ビットレート, kbps 相当), vbr, abr
- filesize / filesize_approx(単位は K, M, G 可)
- language, proto(http, https, m3u8 など)
- =, !=, <, <=, >, >=
- 文字列向け:^=(前方一致), $=(後方一致), *=(部分一致), ~=(正規表現)
- 安全比較(値が不明でも落とさない):比較記号の直後に ?例:[height<=?1080] … 高さが不明なら“合格扱い”にする
- + … 複数の形式を同時に選んで結合(主に「映像だけ」+「音声だけ」)
- / … 無かった時の代替を順に書く
実務の定番:
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 条件は機能しません
-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 が必要なため、インストールしておくと便利。
- ダウンロード対象によっては利用規約に違反する可能性があるため、利用は自己責任で行う必要があります。
参考
- GitHub: https://github.com/yt-dlp/yt-dlp
- ドキュメント: https://github.com/yt-dlp/yt-dlp#usage
関連記事
- pip – Pythonパッケージのインストール・管理を行うCLI pip は Python の公式パッケージインストーラで、PyPI や私設インデックス、ローカルファイル/リポジトリからパッケージを導入・更新・削除できます。python -m pip の形式で実行すると、使いたい Py […]...
- youtube-dl – 動画/音声をダウンロード・変換するCLI youtube-dl は、多数の動画サイトからコンテンツを取得し、ファイルに保存したり音声抽出・字幕取得などの後処理を行うコマンドラインツールです。※コマンド名は youtube-dl(ハイフン)。youtube_dl […]...
- ffmpeg – 音声・動画の変換/編集/録画/抽出を行う多機能CLI ffmpeg はあらゆる形式の音声・動画を入出力し、エンコード・デコード・フィルタ処理・切り出し・連結・録画などを行うコマンドラインツールです。実務ではフォーマット変換、ビットレート/解像度変更、サムネ生成、クリップ作成 […]...
- whisper – 音声/動画から文字起こし・英訳を行うCLI(OpenAI Whisper) whisper は OpenAI が公開している音声認識モデル Whisper をローカルで実行する コマンドライン です。音声/動画ファイルを読み込み、日本語など多言語の**文字起こし(transcribe)や英語への […]...
- nvm – Node.js のバージョンを切り替える(Node Version Manager) nvm は、複数の Node.js をユーザー単位・シェル単位でインストール/切り替えできるバージョンマネージャです(POSIX シェル向け)。macOS/Linux/WSL で動き、Windows ネイティブは別実装( […]...
- composer – PHPの依存関係を管理するパッケージマネージャ composer は、composer.json に宣言した依存パッケージを解決・インストール・更新し、vendor/ に配置するツールです。既定のリポジトリは Packagist(packagist.org)です。(g […]...
- wsl – Windows上でLinux環境(WSL)を管理・起動する wsl は Windows Subsystem for Linux(WSL)のインストール・起動・停止・エクスポート/インポート・ディスクのマウントなどを行うコマンドです。PowerShell/CMD から実行し、WSL […]...
- brew – macOS/Linuxでパッケージを管理・インストールする brew(Homebrew)は、OS標準にないソフトを簡単に導入・更新・削除できるパッケージマネージャです。macOSとLinuxの両方で利用でき、一般ユーザー権限のまま多数のソフトを扱えます。 (Homebrew)Li […]...