youtube-dl – 動画/音声をダウンロード・変換するCLI

HTTP/APIクライアント

youtube-dl は、多数の動画サイトからコンテンツを取得し、ファイルに保存したり音声抽出・字幕取得などの後処理を行うコマンドラインツールです。
※コマンド名は youtube-dl(ハイフン)。youtube_dl は Python モジュール名です。
実務では「教育動画の社内配布用に自社権利コンテンツを取得」「検証用データの一括取得」「字幕・メタ情報の抽出」などに使います。※利用は各サイトの利用規約と著作権法を必ず遵守してください。

本コマンドの開発は停滞気味で、YouTubeのダウンロードはほとんど出来なくなっています。
後継の yt-dlp の使用を推奨します。

構文(Syntax)

# 基本
youtube-dl [GLOBAL_OPTIONS] [DOWNLOAD_OPTIONS] URL...

# 形式選択
youtube-dl -F URL                                   # 取得可能フォーマット一覧
youtube-dl -f FORMAT URL                            # 指定フォーマットで取得
youtube-dl -f 'bestvideo+bestaudio/best' URL        # 映像+音声の自動合成(要 ffmpeg)

# 出力テンプレート
youtube-dl -o '%(title)s.%(ext)s' URL

# 音声抽出(要 ffmpeg)
youtube-dl -x --audio-format mp3 --audio-quality 0 URL

主なオプション一覧

オプション説明使用例
-F利用可能なフォーマット一覧を表示youtube-dl -F URL
-f SELECTORフォーマット選択(複合指定/フォールバック可)-f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best' URL
-o TEMPLATE出力ファイル名テンプレート-o '%(playlist_title)s/%(playlist_index)02d-%(title)s.%(ext)s'
-x --audio-format FMT音声抽出/MP3, M4A などに変換(要 ffmpeg)-x --audio-format m4a URL
--audio-quality Q音声品質(例: 0=最高、192K など)--audio-quality 0
--write-sub --sub-lang LANGS字幕を取得(複数可、en,ja など)--write-sub --sub-lang en,ja URL
--embed-subs --embed-thumbnail字幕/サムネをファイルへ埋め込み(要 ffmpeg)--embed-subs URL
--add-metadataタイトル/アーティスト等のメタデータ付与--add-metadata URL
--download-archive FILE取得済みIDを記録し重複をスキップ--download-archive downloaded.txt URL
--yes-playlist / --no-playlistURLがプレイリストのとき全件/単体のみ--no-playlist URL
--playlist-items ITEMS取得する項目番号(範囲/カンマ区切り)--playlist-items 1-10,15 URL
-r RATEダウンロード速度制限-r 2M
-c --continue中断から再開-c URL
-i --ignore-errors失敗を無視して続行-i URLS.txt
--cookies FILEブラウザからCookiesを渡す--cookies cookies.txt URL
--proxy URLプロキシ経由で取得--proxy http://127.0.0.1:8080 URL
-q / -v静音 / 詳細ログ-v URL
-U自己アップデート(配布形態により不可の場合あり)youtube-dl -U

実行例

1) 最高画質の映像+音声をMP4で保存(Web再生互換)

説明: 映像・音声を別々に取得して結合します(ffmpeg 必須)。
コマンド:

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]' \
  -o '%(title)s.%(ext)s' URL

2) プレイリストをディレクトリ分けで一括保存

説明: タイトルとインデックスで整然と保存します。
コマンド:

youtube-dl --yes-playlist \
  -o '%(playlist_title)s/%(playlist_index)02d-%(title)s.%(ext)s' URL

3) 音声のみ抽出してMP3化(ポッドキャスト用)

説明: 変換品質を最高にし、メタデータも付与します。
コマンド:

youtube-dl -x --audio-format mp3 --audio-quality 0 --add-metadata URL

4) 字幕を取得して埋め込む(英/日)

説明: 取得+動画へ焼き込まず埋め込み(プレイヤーで切替可能、要 mp4/mkv)。
コマンド:

youtube-dl --write-sub --sub-lang en,ja --embed-subs -f 'bestvideo+bestaudio' URL

5) エラー例:ffmpeg 不在で結合/変換を試みる

説明: ポストプロセスに ffmpeg が必要です。
コマンド:

youtube-dl -f 'bestvideo+bestaudio' URL

出力例(例):

ERROR: ffprobe/avconv not found. Please install ffmpeg.

対処: パッケージマネージャ等で ffmpeg をインストールして再実行。

関連コマンド

  • yt-dlp : 活発にメンテされる派生。youtube-dl 互換の操作感で機能拡張多数。
  • ffmpeg : 映像/音声の結合・変換・埋め込み処理に必須。
  • aria2c : --external-downloader で外部ダウンローダとして併用可。
  • curl / wget : 補助的な取得やAPI呼び出しに。

備考

  • 法的/倫理面: ダウンロードは権利者の許諾がある場合、または自分のコンテンツ・ライセンス許諾済み素材など合法な用途に限定してください。サイトの利用規約・地域の著作権法に反する行為は行わないでください。
  • フォーマット選択: -F で候補を確認 → -fbestvideo+bestaudio / 条件式(例: height<=720)を指定。
  • 出力テンプレート: 代表キー %(title)s, %(id)s, %(uploader)s, %(duration)s, %(playlist_index)s など。
  • 設定ファイル: 既定は ~/.config/youtube-dl/config(または /etc/youtube-dl.conf)。よく使うオプションを1行ずつ記述。
  • 自己アップデート: pip や配布パッケージで入れた場合は pip install -U youtube_dl やパッケージマネージャで更新します。
  • ログインが必要なサイト: --cookies(Netscape 形式)や -u/-p を利用。2要素認証や年齢確認のあるサイトは追加手順が必要な場合があります。
  • 結合/変換: 映像+音声のマージ、字幕・サムネの埋め込み、音声抽出など多くの後処理に ffmpeg が必要です。

参考

Bash玄

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

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

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

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

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

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

Bash玄をフォローする

コメント