本文へスキップ
yt-dlp

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

Facebook の動画向けに yt-dlp コマンドを組み立てます。ほとんどの動画で必要になる cookies オプションも含みます。

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

あなたのコマンド

yt-dlp -f 'bv*[height<=1080]+ba/b[height<=1080]' --merge-output-format mp4 --no-playlist --cookies-from-browser chrome 'https://www.facebook.com/watch/?v=1234567890'
基本

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

動画と画質

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

Facebook での注意点

Facebook の大部分は未ログインでは利用できず、高画質の版はログイン済みのセッションにしか提供されないことがよくあります。cookies を渡せばこの両方が一度に解決します。

ブラウザで見えていた画質より低く感じるなら、まずフォーマット一覧を出してください。あなたのセッションに提供される画質の段は、Web プレイヤーが使うものより短いことがよくあります。

Facebook の URL は、yt-dlp が扱うどのプラットフォームよりも形が多いです。/watch/?v=…/reel/…、グループの投稿、ページの動画、fb.watch の短縮リンク。どれも同じ extractor に着地しますが、ページに包まれたものは先に動画をほどく必要があることがあります。信頼できる形はパーマリンクです —— 投稿のタイムスタンプを右クリックしてそのアドレスをコピーしてください。それは、たまたま動画を含むフィードではなく、メディアのページをまっすぐ指します。

同じ動画がページ、グループ、プロフィールに 3 つの別項目として存在することがあり、画質の段はその間で違います。ページへのアップロードはたいてい最高の版を持ち、再共有は最低です。グループの動画には、そのグループのメンバーであるアカウントの cookies が要ります。投稿を見えないセッションはダウンロードもできず、これを変えるオプションはありません。Marketplace の出品はまったく別のシステムで、yt-dlp はまったく対応していません。

ライブのリプレイは配信が終わればふつうの動画のように振る舞うので、通常のオプションでダウンロードします —— 注意はひとつだけ:リプレイはライブ配信ではないので「最初から録画」は適用されず、ファイルの冒頭は Facebook が残しておいたものです。リプレイがイベントの途中から始まるなら、それより前の部分は映像として保存されたことがなく、プラットフォームが保存しなかったメディアに届く設定は存在しません。

本当に動かないものが 2 つあり、誰かに一夜を浪費させるより、はっきり言うほうが安上がりです。Marketplace の出品と、すでに消えたストーリーです。それ以外の失敗はたいていフォーマットではなくアクセスで起きます —— だから最初に確かめるのは cookies、その次が -F です。フォーマットは出てくるのにどの段も低いなら、それはあなたのセッションに提示されている段です。別のアカウントでは多く見えることもありますが、プラットフォームが配らない上位の版をフラグがでっち上げることはありません。

よくある質問

yt-dlp は非公開の Facebook 動画をダウンロードできますか?
あなたのアカウントがすでに見られるものだけ、--cookies-from-browser を使って可能です。持っていない権限を迂回する方法はありません。
cookies なしだと Facebook がエラーを返します。
Facebook の大部分は未ログインでは利用できません。ブラウザを閉じた状態で --cookies-from-browser chrome によりセッションを渡してください。
ブラウザで見たときより画質が低いのはなぜ?
Facebook は高画質の版を一部のセッションにしか出しません。その URL で何が使えるか -F で確認し、一覧が短ければ cookies を渡してください。