yt-dlp – 使い方や機能紹介 – 機能豊富なオーディオ/ビデオダウンローダー

HTTP/APIクライアント
スポンサーリンク

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.exePATH が通ったディレクトリ(例: 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, fps
  • tbr(総ビットレート, kbps 相当), vbr, abr
  • filesize / 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&lt;=800M]

video+audio / fallback with "/"

-F で現物を見て → 上の部品を組み合わせれば、狙い通りの“画質・互換・サイズ”で安定して落とせます。
もし「このURLで“厳密に 1080p・H.264・m4a・サイズ<1GB”」のようなピンポイント条件があれば、その URL を前提に最適な -f 式を作って渡します。

yt-dlp ダウンロード対応の動画/音声サイト

ざっくり言うと、対応サイトの“正式な一覧”は公式の supportedsites.md にまとまっています(数千サイト対応)。最新はここで確認できます。

よく使われる代表例

  • YouTube
  • Vimeo
  • SoundCloud
  • Twitch
  • X(旧Twitter)
  • Instagram
  • Facebook
  • 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をダウンロードできなくなったのはなぜですか?

代表的な原因は次のとおりです(複数が同時に絡むこともあります)。

  1. サイト側の仕様変更
    再生ページ構造やトークン取得手順が変わると、旧バージョンの yt-dlp は失敗します。
    → まずは最新版へ更新してください。 yt-dlp -U # 自己更新(配布形態によっては権限が必要) # あるいは pip install -U yt-dlp
  2. DRM(著作権保護)による暗号化
    TVer では作品や時期により Widevine などの DRM が用いられる場合があり、
    DRM 付き配信は yt-dlp ではダウンロードできません(技術的・法的に非対応)。
  3. ログイン・地域・年齢制限
    アカウント必須や 日本国内限定(ジオブロック) のケースがあります。
    ブラウザ Cookies を渡すと解決することがあります。 # 既定ブラウザのCookieを取り込む(Chrome/Edge/Firefox等) yt-dlp --cookies-from-browser chrome <TVerのURL> # 詳細ログで原因を確認 yt-dlp -Uv <TVerのURL>
  4. 広告スキームやセグメント取得方法の変更
    HLS(M3U8) の取得手順や署名付きURLの挙動が変わると失敗します。
    バージョン更新・時間を置いた再試行・Issueでの進捗確認が必要になることがあります。

注意:配信サービスの利用規約・著作権法に必ず従ってください。
視聴目的の範囲を超える保存やDRM回避は法律・規約に抵触する可能性があります。

Q. Yt-dlgとは何ですか?

yt-dlg(「YouTube-DL GUI」)は、yt-dlp/youtube-dlボタン操作で使えるGUIフロントエンドです。
ダウンロード先のテンプレート、画質や字幕の選択、キュー管理などを画面から設定できます。
「コマンドは苦手だが yt-dlp の機能を使いたい」という場合に役立ちます。

関連コマンド

  • youtube-dl : 元になったツール(開発停滞中)。
  • ffmpeg : 動画や音声の変換で併用されることが多い。

備考

  • yt-dlppip やパッケージマネージャ(brew install yt-dlp, apt install yt-dlp)で導入可能。
  • ほとんどの処理に ffmpeg が必要なため、インストールしておくと便利。
  • ダウンロード対象によっては利用規約に違反する可能性があるため、利用は自己責任で行う必要があります。

参考

スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント