動画圧縮ツール
ブラウザで動画を圧縮(無損失・音声削除に対応)
処理中…
0.0
停止していません。計算が終わると結果が表示されます。
動画圧縮ツールについて
この圧縮ツールは、FFmpegをWebAssemblyに移植したffmpeg.wasm(0.12.10、シングルスレッド版コア)を初回実行時にCDNから読み込み、ブラウザ内で動かします。動画はどこにもアップロードされませんが、エンコード速度はCPUの1コア分に限られます。デスクトップ版FFmpegより数倍遅いのが普通で、1分の1080p動画でも数分かかることがあります。
モードは3つです。「画質圧縮」はH.264(libx264)で再エンコードしてMP4に、「元のまま(再エンコードなし)」は再エンコードせずストリームをそのまま詰め替え、「音声削除」は映像はそのままで音声トラックだけを外します。容量が大きく減るのは1つ目だけです。
CRFは目標サイズではなく目標画質
画質圧縮モードはビットレートを指定せず、CRF(Constant Rate Factor)でエンコードします。CRFは0〜51の画質目標で、小さいほど高画質・大容量です。エンコーダーは動きの多い場面に多く、静止した場面に少なくビットを配分して体感画質をそろえるため、同じCRFでもサッカー中継は大きく、スライド録画は小さくなります。
FFmpegのWikiによる目安は、CRFを6上げると容量はおよそ半分、6下げるとおよそ2倍です。このツールの3段階は23(高画質)、28(標準)、33(高圧縮)で5ずつ違います。x264の既定値が23なので、23は元とほぼ見分けがつかない水準、33はスマホ画面なら見られる水準と考えてください。
CRFの弱点は、仕上がりの容量を先に決められないことです。上限のあるサービスに上げるなら、一度圧縮してみて超えたらCRFを上げるか解像度を下げてやり直すしかありません。
なぜH.264のMP4だけなのか
VP9やAV1は同じ画質ならH.264より小さくなりますが、エンコードがはるかに遅く、シングルスレッドのWebAssemblyでAV1を作ると短い動画でも現実的ではありません。再生側の互換性も違います。H.264のMP4はほぼすべてのスマホ、テレビ、メッセンジャー、古いWindows PCでハードウェア再生できますが、AV1のハードウェアデコードは比較的新しい機器に限られます。
x264のpresetにveryfastを使っているのも同じ理由です。presetは圧縮効率と速度の交換で、既定のmediumより速い代わりに同じCRFで少し大きくなります。音声はAAC 128kbpsで再エンコードします。
CRFより先に解像度を下げる
1080p(1920×1080)を720p(1280×720)にするとピクセル数は44%になります。スマホやメッセンジャーのプレビューでは差が分かりにくいのに容量は大きく減り、CRFを33まで上げてつぶれさせるより結果がよいことがほとんどです。
解像度を選ぶと高さを合わせ、幅は縦横比から自動計算します。H.264は奇数サイズをエンコードできないため、縦横とも偶数にそろえます。元より小さい値だけが意味を持ちます。縦動画(1080×1920)で720pを選ぶと高さが720になり、想像よりかなり小さくなる点に注意してください。
「元のまま」と「音声削除」がしていること
「元のまま」モードは映像と音声をデコードせずに新しいコンテナへコピーします(ストリームコピー)。画質の劣化はなく数秒で終わりますが、再圧縮しないので容量はほぼ変わりません。役に立つのはコンテナの整理で、MP4・WebM・MKV・AVIは同じ形式、MOVなどそれ以外はMKVで保存します。MP4で保存するときは索引(moov)をファイルの先頭に移す(faststart)ので、Webに載せると全部を受信する前に再生が始まります。
音声削除モードも映像はコピーし、音声だけを外します。減るのは音声トラックの分だけで、128kbpsなら1分あたり約0.96MBです。音のいらない画面録画を手軽に軽くするのに向いています。
例
アップロード上限に合わせたビットレート計算
- 入力
60秒の動画を8MiBに収めたい、音声AAC 128kbps- 結果
映像に使える平均ビットレートは約0.99Mbps
8MiB=67,108,864ビット÷60秒≒1,118,000bpsから音声の128,000bpsを引くと約990kbps。1080pには足りず720pや480pなら現実的なので、先に解像度を下げてCRF 28で試すのが順番です。
解像度だけ変えた場合
- 入力
1920×1080 → 720pを選択- 結果
1280×720、ピクセル数44.4%
1280×720÷(1920×1080)=921,600÷2,073,600=0.444。CRFが同じでも、エンコードする情報が半分以下になります。
画面録画から音声だけ外す
- 入力
10分の画面録画、音声128kbps、「音声削除」- 結果
約9.6MB減、映像は元のまま
128,000bps×600秒÷8=9,600,000バイト。映像は再エンコードしないので、画質も処理時間も損をしません。
使い方
- 動画ファイルを選びます(300MBを超えるとメモリ不足の警告が出ます)。
- モードを選び、画質圧縮なら画質の段階と解像度を決めます。
- 初回はエンジン(約30MB)を読み込んでからエンコードが始まります。
- 結果をプレビューして容量を確認し、ダウンロードします。
よくある質問
圧縮にとても時間がかかります。
ffmpeg.wasmはCPU1コアだけを使うシングルスレッド版なので、デスクトップ版よりかなり遅くなります。720pや480pに下げるとエンコードするピクセルが減り、時間も大きく短縮されます。
「元のまま」モードにしたのに容量が変わりません。
正常です。このモードはストリームをそのままコピーするので圧縮は起きません。容量を減らすには画質圧縮モードを使ってください。
ちょうど10MBに合わせられますか?
CRF方式なので目標容量は指定できません。一度試して超えたら、CRFを上げるか解像度を下げて再圧縮してください。
AV1やVP9で保存できますか?
対応していません。ブラウザ内のシングルスレッドでは遅すぎるうえ、H.264が再生互換性で最も有利だからです。
iPhoneのHDR動画を圧縮したら色があせて見えます。
HDRをSDR向けに変換するトーンマッピングを行わないため、色が薄く、または暗く見えることがあります。HDR動画はiPhoneから書き出す際に「互換性優先」を選ぶほうが安全です。
出典
- FFmpeg Wiki — H.264 Video Encoding Guide (CRF, presets)
- ffmpeg.wasm — official documentation
- MDN — Web video codec guide
- Can I use — AV1 video format
基準日: