Reddit 用 yt-dlp コマンドジェネレーター
Reddit の動画向けに yt-dlp コマンドを組み立てます —— 音が出るようにする結合の手順も含みます。
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 を付けると、ほかと同じように音声だけを取り出せます。動画が不要な投稿から音声だけを保存するいちばん速い道です。