本文へスキップ
yt-dlp

Reddit 用 yt-dlp コマンドジェネレーター

Reddit の動画向けに yt-dlp コマンドを組み立てます —— 音が出るようにする結合の手順も含みます。

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

あなたのコマンド

yt-dlp --merge-output-format mp4 --no-playlist --embed-metadata https://www.reddit.com/r/videos/comments/xxxxxx/
基本

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

動画と画質

高さの上限を決めます。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)
リセット

Reddit の動画が無音になる理由

Reddit は映像と音声を別ファイルで保存しています。ffmpeg がないと yt-dlp は映像だけをダウンロードし、音声を結合するものが存在しません —— ファイルは再生できますが無音で、しかも理由を説明するエラーは出ません。

ffmpeg を入れれば、残りはここのプリセットが処理します。ギャラリー投稿は再生リストとして扱われるので、再生リスト全体モードですべての項目が取れます。

v.redd.it ホストは、トラブルの大半がここから始まります。v.redd.it への直接リンクならそのまま落ちますが、サブレディットのフィードや old.reddit.com のページから辿った同じ動画は Reddit のページ URL に包まれて届き、古い yt-dlp ではその包装をほどけないことがあります。ほかの設定に手を付ける前に、まず yt-dlp -U で更新を —— Reddit の extractor はとりわけ何度も作り直されており、3 か月前のバイナリは今のサイトの姿より古いのです。

ギャラリーがもう半分です。Reddit は動画を中に含む画像ギャラリーを配信していて、yt-dlp はそれを独立した項目の再生リストとして提示します —— 画像は 1 枚ずつ、動画は別の項目として。動画だけが要るなら再生リストをオフにすれば yt-dlp は動画だけを取り、全部が要るなら再生リスト全体モードのまま記録ファイルを足してください。こうすれば再実行では、最初の実行で失敗した項目だけを拾います。

隔離されたサブレディットと NSFW のサブレディットには cookies が要ります —— ほかと同じブラウザ cookies のオプションです —— 未ログインのリクエストには Reddit がメディア URL を渡さないからです。削除された投稿は、どんなオプションも届かない唯一のものです。投稿が消されるとメディア CDN の項目も一緒に消え、かつてあったミラーはとっくにありません。まだ機能しているのはページそのものの Wayback Machine ですが、それは yt-dlp が取ってくる範囲の外です。

Reddit は自前でホストするものをすべて再エンコードしていて、天井は低めです。v.redd.it は 720p どまりなので、1080p の高さ上限は 720p より上を見つけられず、720p のファイルをそのまま返します —— これはプラットフォーム側の限界で、ダウンロードの失敗ではありません。音声だけを取る選択肢も知っておく価値があります。Reddit の動画に -x を付けると、ほかと同じように音声だけを取り出せます。動画が不要な投稿から音声だけを保存するいちばん速い道です。

よくある質問

Reddit の動画に音がないのはなぜ?
Reddit は映像と音声を別に保存しているので結合が必要で、それには ffmpeg が要ります。無音のファイルは、ほぼ必ず ffmpeg がないことを意味します。
NSFW の投稿は動きますか?
18 歳以上の設定を有効にしたログイン済みセッションが必要です。--cookies-from-browser で渡してください。
ギャラリー投稿を全部ダウンロードできますか?
再生リストの扱いを「再生リスト全体」にしてください。yt-dlp はギャラリーを再生リストとして扱います。