Discordに動画を送信したいとき、無料のアカウントでは8MBしか送れないので困ったことはありませんか?この記事では動画の容量を無理やり8MB以内に抑える方法をご紹介します!
準備するもの
- 送信したい動画(ここではファイル名を「input.mp4」とします。)
- FFmpeg
- 適当な動画編集ソフト(なくてもOK)
FFmpegはあらかじめ下記のサイトを参考にダウンロードしておきましょう。ダウンロードも利用も無料でできます。FFmpegは今回に限らずいろいろな場面で使えるものですのでダウンロードしておいて損はありません。
FFmpegってなに?
簡単にまとめると「高機能な動画変換ソフト」です。変換ソフトと書きましたが編集もできます。
ただ、他のソフトと違い、コマンドプロンプトやターミナルを使った操作になりますので一見難しそうに見えますが、簡単な文法とコマンド(引数)を覚えてしまえば問題ありません。
この記事ではコピペである程度使えるように解説していきますのでご安心ください!
FFmpegの特徴としては、
- 無料で利用できる
- 汎用性が高い(いろいろな形式に対応している。)
- GUIでないため起動や操作が非常に軽量
など。使いこなせればかなり便利なものです。
前提:Discordの対応動画形式
まず、今回のテーマは「Discordで動画を送れるようにするため容量を8MBまで抑えたい」というものです。どれだけ圧縮できてもDiscordがその形式に対応していなければ意味がありません。
Discord、HEVCに対応してなかった
ここで悲報です。DiscordがHEVCに対応していませんでした。(HEVCの動画を送信したら再生できなかった……。)
HEVCとは(H.265ともいう)動画形式で、圧縮効率が比較的良いことで知られています。(後継規格やもっとすごい規格も出ているようですがその話は割愛します。)
つまり、「8MBまでだけど、圧縮効率がいい形式には対応してないからよろしくな!」ってことです。勘弁してくれ。ただ、ロイヤリティーの問題などで気軽に採用できないのでしょう。知らんけど。
我々はHEVCを使わずに動画を圧縮しないといけません。
動画をカットしておく
当たり前の話ですが、長い動画を8MBに抑えるのは不可能です。本当に見せたい(送りたい)部分以外はカットする、もしくは複数の動画に分割しておきましょう。
AviUtlも非常に優秀な動画編集ソフトですが、導入が難しいため初心者の方は「カット編集がしたいだけなのに……!」となるでしょう。
やろうと思えば、FFmpegでもカット編集できますが、初心者にはおすすめしません。
FFmpegで動画を8MBに抑える
さて本題です。FFmpegを使って動画を無理やり8MBに抑えてみましょう。
カット編集しておいた動画(input.mp4)があるところでコマンドプロンプトを開きます。
ffmpeg -i "input.mp4" -vcodec libx264 -fs 8MB "output.mp4"
コマンド | ざっくりとした意味 |
---|---|
ffmpeg | FFmpegを召喚! |
-i “input.mp4” | 「input.mp4」って名前の動画を使うよ! |
-vcodec libx264 | 動画の形式はH.264でよろしく! |
-fs 8MB | 動画のサイズは8MB以内に収めてくれよな! |
“output.mp4” | 完成した動画の名前は「output.mp4」だ! |
NVIDIAのGPUを使っている場合
NVIDIAのGPUを使っていてNVENCが利用できる場合はこちらの方がより素早くエンコードできます。
そこまで古いGPUでなければ基本的に利用できるのでぜひ試してみてください。
ffmpeg -i "input.mp4" -vcodec h264_nvenc -fs 8MB "output.mp4"
AMD製やIntel製のGPUで高速エンコードする方法もありますがここでは割愛します。
動画が途中でカットされてしまう場合
FFmpegが、「これはどう頑張っても無理だ、8MBに収まらねえ!」と途中で諦めてしまうために発生する現象です。
考えられる原因 | 解決策 |
---|---|
動画が長すぎる | もっと短くカットしましょう。 |
高画質すぎる | 例えば4Kの動画などを8MBにするのは無理です。解像度を落としましょう。 |
FFmpegで画質を落としたい場合は上記のコードを少しアレンジします。
ffmpeg -i "input.mp4" -s 1280x720 -vcodec libx264 -fs 8MB "output.mp4"
こうすることによりoutput.mp4の解像度が「1280×720」になるため、8MBに抑えやすくなります。これでも途中でカットされてしまう場合は動画をもっと短くカットする必要があります。「-s」以降の数値は変更できます。下記の記事を参考にしてください。
画質を落とす以外でも、動画が60fpsの場合は30fpsに落とすのも手です。FFmpegでフレームレートを落としたい場合は次のようにアレンジします。
ffmpeg -i "input.mp4" -r 30 -vcodec libx264 -fs 8MB "output.mp4"
これで動画のフレームレートが30になります。
WebMに変換して8MBに抑える
WebM形式に変換することで動画の容量を8MBに抑えるという方法もあります。WebMとは、Googleが開発したWebとの相性が良い動画規格です。
DiscordではHEVCを再生できませんが、代わりにWebMという形式の動画を再生できます。
上記の方法ではH.264(AVC)という規格でエンコードしていますが、AVCよりもWebMの方が圧縮効率が良く、比較的画質を保ったまま容量を抑えやすい形式となっています。
また、上記の方法ではNVIDIA製のGPUがあれば「NVENC」を利用したハードウェアエンコードが可能ですが、WebMはハードウェアエンコードに対応していない場合がほとんどです。処理時間がかかってしまいますので注意しましょう。
動画をWebMに変換
コマンドプロンプトで次のように入力します。
ffmpeg -i "input.mp4" -fs 8MB "output.webm"
先ほどと同様で「input.mp4」と「output.webm」の部分は変更しても問題ありませんが、output.webmの拡張子(「.webm」の部分)は変更しないでください。
途中で動画がカットされてしまう場合は「動画が途中でカットされてしまう場合」を確認して、「-s 1280×720」を付け足すなど工夫してください。
WebMの注意点
WebMは主要ブラウザなどが再生に対応していますが、AVCやHEVCに比べるとまだまだ普及率が低く、端末によっては再生できない場合もあります。
Discordでは対応していても、端末側で対応していない場合は再生できないので注意してください。
この記事を書いている現在(2020年末)では、iOS版のDiscordでWebMが再生できないことが判明しています。
そのうちWebMも普及してきて対応される可能性はありますが、利用にはじゅうぶんに注意してください。
まとめ & Discordに頼みたいこと
無料アカウントでもせめて10MBは送信できるようにしてほしいですね。画像だとしても最近ものは特に画質が向上しており、今後8MBに抑えられなくなってくる可能性があります。
自動で圧縮する機能をつけたり、無料アカウントで送信できる容量の上限を引き上げたりしないとそろそろキツくなってくるかも……。
また、ロイヤリティーなどの問題でHEVCが導入できないのかもしれませんが、サーバーの容量を節約したいのであればすぐに導入することをおすすめします。現状AVCで8MB以内の動画を作成・送信することはかなり困難です。
ヘビーユーザーは潔くNitroを購入すべし
Discordヘビーユーザーの方は、日頃の感謝の気持ちも込めて潔く「Discord Nitro」または「Discord Nitro Classic」を購入しましょう。(※Discordのステマでも、回し者でもありません。)
Discord Nitroを購入すると送信できるファイルサイズの上限が緩和されるほか、様々な特典がついてきます。
Discord Nitro | 最大100MBまで送信可 | その他諸々特典付きだけど高い |
Discord Nitro Classic | 最大50MBまで送信可 | 特典は控えめだけど安い |