まずDiscordの送信画面で、送れる容量の上限を確かめてください。計算はその値から始めます。

容量ではなく、通信や添付の権限が原因で送れないときは、先に送れないときの確認手順を見てください。FFmpegをインストールせずに試すなら、容量を指定できる圧縮ツールが使えます。

上限をプラン名だけで決めない

2026-09-11時点のDiscordの添付ファイルFAQでは、上限は無料プランで20MB、Nitro Basicで50MB、Nitroで最大500MBです。FAQには、上限を試験的に変えることがあるとも書かれています。古いヘルプや記事には、これと違う値が残っています。

実際の送信画面に出る上限と、送り先で適用される条件を優先してください。

MBからビットレートを計算する

計算では、1 MB = 1,000,000バイト、1 kbps = 1,000 bit/s とします。1 MiBは1,048,576バイトで、MBとは別の単位です。

合計kbps = 目標MB × 8000 × 余裕率 ÷ 動画の秒数
映像kbps = floor(合計kbps − 音声kbps)

余裕率0.95は、全体の5%を、コンテナ(動画の入れ物)の情報などの分として残しておく値です。0.95にしても、上限に収まらないことはあります。

映像kbpsがゼロ以下になったら、その長さと音声の設定では上限に収まりません。動画を短くするか、音声が要らなければ消すか、共有リンクを使うことを考えてください。

たとえば90秒の動画で、音声が128kbps、余裕率が0.95なら、次のようになります。

目標容量 合計kbps(概算) 指定する映像kbps
10 MB 844.44 716
20 MB 1688.89 1560
25 MB 2111.11 1983
50 MB 4222.22 4094

表の値は計算で出したもので、実際に出力したサイズでも、プランの一覧でもありません。画質を保つのに必要なビットレートは、映っているものや文字、動きの量で変わります。

90秒を20MB以内に近づける例

先に、入力が90秒であることを確かめます。次のコマンドは、最初の映像1本と、あれば最初の音声1本を使い、H.264とAACのMP4にします。

ffmpeg -i input.mp4 -map 0:v:0 -map "0:a:0?" -c:v libx264 -b:v 1560k -preset medium -c:a aac -b:a 128k -map_metadata -1 -map_chapters -1 -sn -dn -movflags +faststart discord-20mb.mp4

1行のコマンドなので、PowerShellやコマンドプロンプトでもそのまま実行できます。元のファイルは消さずに残してください。

このコマンドは、動画を90秒に切るものではありません。入力が90秒より長いと、同じ設定でも出力は大きくなります。2本目以降の音声、字幕、チャプターは出力に入りません。-map_metadata -1 でタグの情報は外れますが、映っている顔や声、画面の中の文字はそのまま残ります。

容量が安定しないときは2パスを比較する

2パスでは、1回目で映像を分析し、2回目で同じ素材と同じ映像設定のまま書き出します。1回目の分析結果はログファイルに保存され、2回目で読み込まれます。別の作業と同じログ名を使わないように、専用の作業フォルダーで実行してください。

ffmpeg -i input.mp4 -map 0:v:0 -c:v libx264 -b:v 1560k -preset medium -pass 1 -passlogfile discord20-pass -an -f null -
ffmpeg -i input.mp4 -map 0:v:0 -map "0:a:0?" -c:v libx264 -b:v 1560k -preset medium -pass 2 -passlogfile discord20-pass -c:a aac -b:a 128k -map_metadata -1 -map_chapters -1 -sn -dn -movflags +faststart discord-20mb-2pass.mp4

1回目がエラーで終わったら、2回目は実行しないでください。入力を変えたとき、カットしたとき、解像度や映像の設定を変えたときは、1回目からやり直します。詳しくは2パスエンコードを見てください。

出力後に確認すること

確認結果 次に行うこと
ファイルがない、0バイト、FFmpegがエラーで終わった 失敗として扱い、エラーの内容と入力の形式を確かめる
実際のファイルサイズが上限以上 余裕を増やして計算し直し、元の動画から変換し直す。短くする方法や共有リンクとも比べる
容量内だが、文字や動きが見づらい 実際の画像での画質比較を見て、長さ・解像度・容量のどれを優先するか決める
音声・字幕・向きが足りない 元の動画と出力を比べ、選ぶトラックや変換の設定を見直す
容量内なのに送れない 小さな別のファイルでも送れるか試し、通信・権限・Discord側の状態を確かめる
送れたが、相手が再生できない 相手のアプリで再生できるか確かめる。容量に収まることと、再生できることは別の問題

Windowsでは、エクスプローラーでファイルのプロパティを開き、バイト数を確かめてください。画面に出るMBの表示は丸められているので、それだけで判断しないでください。送る前に、元の動画と出力の最初・途中・最後を再生して比べます。

実際に出力したサイズ

上の1パスと2パスの例を、90秒・640x360・30fpsのテスト映像(合成した模様と440Hzの音)で1回ずつ実行しました(2026-09-11、Windows版FFmpeg 8.1)。

20MB目標の例 出力のバイト数 出力の長さ
1パス 19,039,954 90.005秒
2パス 19,115,005 90.005秒

どちらも20,000,000バイト以内に収まりました。この例では、2パスの方がわずかに大きくなりました。

入力の条件と、出力の容量・長さは、テストの記録(JSON)で確かめられます。