本文へスキップ
yt-dlp

YouTube 字幕のダウンロード — yt-dlp コマンドジェネレーター

動画をダウンロードせずに字幕だけを .srt で保存する yt-dlp コマンドを組み立てます。

任意です。空のままにするとコマンドは URL で終わるので、あとから自分で埋められます。

あなたのコマンド

yt-dlp --write-subs --convert-subs srt --sub-langs en --write-auto-subs --no-playlist -s 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
基本

音声のみを選ぶと音声トラックを取り出し、映像は捨てます。

動画と画質

高さの上限を決めます。yt-dlp はその上限以下で最良のストリームを選びます。

分かれている映像と音声のストリームを結合して入れるファイル形式です。

詳細オプション(3)

画質のプルダウンを上書きします。format の書き方をすでに知っている人向けです。

再エンコードせず入れ直すだけです。速く、劣化もありません。

映像を再エンコードします。遅く、劣化もします —— remux で足りないときだけ使ってください。

音声

音声を変換する先のファイル形式です。

VBR はサイズと品質の比がいちばん良く、固定 bitrate はサイズが読みやすいです。

字幕

埋め込みは字幕を動画の中に入れ、保存は隣に別の .srt ファイルを書き出します。

カンマ区切りで指定します。利用できる全言語が欲しいときは all と書きます。

再生リストとチャンネル

URL が動画と再生リストの両方に属している場合の動作です。

範囲もリストも使えます。たとえば 1-10,15、あるいは末尾から 1 つ飛ばしで取る -5::2 など。

詳細オプション(1)

ダウンロード済みの項目を記録するので、再実行時にはそれらを飛ばします。チャンネルを同期させ続ける方法がこれです。

区間とチャプター
詳細オプション(2)

*00:01:30-00:03:00 のような時間範囲、またはチャプター名です。先頭のアスタリスクは時刻であることを示します。

メタデータとカバー画像
詳細オプション(3)
SponsorBlock

SponsorBlock のデータをもとに、コミュニティが印を付けた区間をファイルから切り取ります。

詳細オプション(1)

区間は残したまま印を付けるので、自分で飛ばせます。

ファイルとフォルダ

フィールド名は %(...)s の中に書きます。スラッシュはフォルダを作ります。

詳細オプション(4)

ファイルを書き出す場所です。上のテンプレートと組み合わせるとサブフォルダも作れます。

ファイル名の最大長(文字数)です。

フィルタ
詳細オプション(5)

YYYYMMDD、または now-1month のような相対日付です。

YYYYMMDD、または相対日付です。

これより小さいものは飛ばします。5M、500K などが使えます。

これより大きいものは飛ばします。

停止するまでにダウンロードするファイル数です。

ネットワーク

たとえば 2M や 500K。残りの帯域を他のことに使いたいときに役立ちます。

詳細オプション(5)

分割されたストリームを速くします。まずは 4 くらいが妥当です。

失敗した部分を何回やり直すか。infinite も指定できます。

HTTP・HTTPS・SOCKS proxy の URL です。

リクエストを実際のブラウザからのものに見せます。突然 403 が出たときの定番の対処です。

ログインと cookies

ログイン中のセッションを直接読みます。非公開・年齢制限・メンバー限定のコンテンツには必要です。

詳細オプション(1)

ブラウザから書き出した Netscape 形式の cookies.txt です。

ライブ配信
詳細オプション(2)

予定されている配信が始まるまで問い合わせ続けます。MIN-MAX は確認の間隔(秒)です。

回避策
詳細オプション(3)

非推奨で、--add-headers に置き換わりました。古い解説記事がまだ多く使っているので残してあります。

非推奨で、--add-headers に置き換わりました。

サイトごとの専用オプションです。たとえば youtube:player_client=web。

出力とデバッグ
詳細オプション(2)
リセット

動画なしで字幕だけ

シミュレートは動画ファイルを書き出す以外のすべてを行うので、字幕は手に入り、ダウンロードは省けます。SRT への変換には ffmpeg が必要です。

何も出てこない場合、その動画には人が付けた字幕がない可能性が高いです —— 自動生成字幕は別のスイッチで、これを入れないと yt-dlp は何も見つけず、しかも何も言いません。

シミュレートはこのページの要のスイッチです:なければ、yt-dlp は動画全体をダウンロードした上で、おまけに字幕も保存します。映画一本分のファイルでは、文字トラックのためとしては大量の転送です。あれば、実行はメタデータを取り、字幕ファイルを書き出し、映像には一切触れません。代償として、シミュレートはサムネイルと説明文の書き出しも省きます —— それは動画実行の産物であって、字幕のものではありません。

言語選択は、字幕のダウンロードが細かくなるところです。--sub-langs en は「en」のタグが付いたトラックそのものだけを取ります。en-orig は自動生成のものに対する YouTube の呼び名で、パターンとしての en.* は両方と地域変種まで拾います。複数言語はカンマ区切りのリストで受けます。同じ言語に人の手と自動の両トラックがある動画では、それらは 2 つの別項目で、両方取るのはまっとうな結果であってバグではありません。

字幕ファイルをエディタへ持っていくなら、フォーマットが効いてきます。SRT は安全な受け渡し用、VTT は Web プレイヤーが見せる装飾を持ち、YouTube 独自の JSON3/_SRV フォーマットは機械向けです。SRT への変換スイッチはよくある場面を片付けますが、ffmpeg が要り、装飾は意図的に失われます —— エディタが欲しいのはテキストであってマークアップではないからです。出力が空に見えるなら、変換の失敗と決める前にファイルの存在を確かめてください:0 バイトの SRT は、トラックそのものが空だったということです。

自動生成字幕には警告が似合います。機械の文字起こしであり、それが含意するものすべてが付いてきます —— 間違った同音異義語、句読点なし、崩れた固有名詞。あなたが読める言語の動画なら検索の索引になりますが、引用するものには人の手のトラック(あれば)だけが残す価値があります。ライブ配信の自動字幕は配信中に生成され、配信が終わってから保存されます —— このサイトのライブ録画オプションは映像のためのもので、終わった配信の字幕は通常の字幕オプションでダウンロードします。

よくある質問

動画なしで字幕だけをダウンロードするには?
.srt のオプションを選び、シミュレートを有効にしてください。動画ファイルの書き出しは飛ばしつつ、字幕は保存されます。
字幕ファイルが出てこないのはなぜ?
その動画に人の字幕がない可能性が高いです。自動生成字幕を有効にして、機械生成のものを取ってください。
字幕の言語を選ぶには?
カンマ区切りで指定します。たとえば en,ja。利用できる全部なら all、英語の全変種なら en.* のようなパターンも使えます。
VTT ではなく SRT で取れますか?
取れます —— .srt のオプションが変換します。これには ffmpeg が必要です。