先にDiscordの送信画面で上限を確認し、その値から計算してください。 この記事はFFmpegで容量を調整するための計算・コマンドガイドです。通信や添付権限で送れない場合は、一般向けの切り分けを先に使います。インストールせずに試す場合は容量指定の圧縮ツールへ進めます。
上限をプラン名だけで決めない
2026-09-11に確認したDiscordの添付ファイルFAQは、無料20MB・Nitro Basic 50MB・Nitro最大500MBを案内し、上限の試験的変更にも言及しています。古いヘルプや記事には異なる値が残っています。実際の送信画面と、共有先に適用される条件を優先してください。
有料プランへの加入が動画変換の成功や、すべての受け手での再生を保証するわけではありません。この記事では特定のプランを購入する必要はありません。
MBからビットレートを計算する
この記事は 1 MB = 1,000,000バイト、1 kbps = 1,000 bit/s です。1 MiBは1,048,576バイトで、別の単位です。
合計kbps = 目標MB × 8000 × 余裕率 ÷ 動画の秒数
映像kbps = floor(合計kbps − 音声kbps)
余裕率0.95は、5%をコンテナ等の余裕として残す計画値です。必ず収まる係数ではありません。映像に割り当てる値がゼロ以下なら、その長さ・音声設定での計画は成立しません。尺を短くする、音声が不要なら削除する、共有リンクを使うなどを検討します。
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やコマンドプロンプトでも改行継続文字の置換は不要です。FFmpegがインストールされ、入力パスを正しく指定できることが前提です。元のファイルは残してください。
動画の長さを90秒にするコマンドではありません。 入力が長ければ、同じ設定でも出力が大きくなります。複数音声・字幕・チャプターをすべて保持する例でもありません。タグを抑制しても顔・声・映像内の文字は残ります。
容量が安定しないときは2パスを比較する
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がエラー終了 | 保存成功と扱わず、エラーと入力形式を確認 |
| 実ファイルサイズが上限以上 | 元動画から余裕を増やして再計算、短縮、共有リンクを比較 |
| 容量内だが文字や動きが見づらい | 実画像の画質比較を参考に、尺・解像度・容量のどれを優先するか決める |
| 音声・字幕・向きが不足 | 元動画と出力を比べ、選択するトラックや変換設定を見直す |
| 容量内なのに送れない | 小さな無害なファイルでも試し、通信・権限・サービス側の状態を確認 |
| 送れたが相手が再生できない | 相手のアプリで再生確認。容量内であることと再生互換性は別 |
Windowsではエクスプローラーのプロパティ等でバイト数を確認し、画面上で丸められたMB表示だけで判断しないでください。元動画・出力の冒頭、中間、最後を再生し、採用する結果だけを共有します。
確認範囲と訂正
2026-09-11、Windowsのnative FFmpeg 8.1で上記コマンドを各1回実行しました。入力は90秒・640x360・30fpsの合成パターンと440Hzの音で、実際の投稿動画ではありません。
| 20MB目標の例 | 実測出力バイト数 | 実測出力時間 |
|---|---|---|
| 1パス | 19,039,954 | 90.005秒 |
| 2パス | 19,115,005 | 90.005秒 |
この入力では両方とも20,000,000バイト以内でした。2パスの方が必ず小さくなるという結果ではなく、他の入力の成功率も測っていません。
旧版の8192を使ったMB換算、追跡できない±30%・±5%の誤差、古いプラン表、投稿成功の保証を訂正しました。長さの取得に失敗すると推定値で処理を続けるWindowsバッチは撤去しました。計算例はDiscordへの実投稿試験ではなく、全端末での完走を証明するものでもありません。
合成入力を使ったコマンド確認記録では、入力条件・実際の出力容量・長さ・検査結果を確認できます。これは掲載条件での動作確認で、実際の共有動画の画質や投稿成功率ではありません。