·11 分

動画をブラウザ内で圧縮する — /tools/video-compress の思想と使い方

Zerosend の動画圧縮ツールは、動画ファイルをサーバーに送らずブラウザ内で再エンコードしてサイズを削減します。WebCodecs で GPU 支援、未対応環境では ffmpeg.wasm にフォールバック。設計思想と使い方、仕組みを Zerosend 編集部が解説します。

打ち合わせ動画、商品撮影、画面録画、子供の運動会。日常で動画を扱う場面は増える一方で、SNS やメッセンジャーのサイズ制限、メールの添付上限、サーバーのストレージコストといった現実的な壁にぶつかります。

Zerosend は 動画圧縮ツール (/tools/video-compress) を、この「軽くしたいだけなのに、動画を他人のサーバーに預ける必要はない」という素朴な違和感を起点に作りました。この記事では、なぜ作ったのか、どう使うのか、裏で何が起きているのかを Zerosend 編集部が整理します。

なぜブラウザ内で動画を圧縮するのか

動画は個人情報そのものです。顔・声・背景・位置情報、ときには画面録画の中にパスワードや顧客名まで写り込みます。これをオンラインの圧縮サービスにアップロードするということは、事実上その内容を一度他人のサーバーに預けることを意味します。

多くのサービスは「一定時間で自動削除」を謳いますが、その削除は利用者から検証できません。削除完了のスクリーンショットを送ってくれるわけでもなく、ログがどこまで残るかも不透明です。未公開の企画映像や社内会議の録画を、無料ツールに放り込むことに抵抗を感じたことがある人は多いはずです。

Zerosend は逆のアプローチを取ります。動画ファイルを最初から外に出さない。処理はすべて、あなたがいま開いているこのブラウザ、ローカル端末の CPU と GPU の中だけで完結します。DevTools の Network タブを開いたまま圧縮を実行すれば、動画そのものがアップロードされていないことを自分の目で確認できます。信用してもらう代わりに、検証可能にする — これが Zerosend の基本方針です。

使い方

操作はシンプルです。

  1. /tools/video-compress を開く
  2. 画面中央のドロップゾーンに動画ファイルをドラッグ&ドロップ、またはクリックして選択 (MP4 / WebM / MOV、最大 500MB)
  3. 圧縮強度 (CRF) と解像度を選ぶ
  4. 「圧縮を開始する」をクリック
  5. 処理が終わると「処理完了。あなたのファイルは外に出ていません。」と表示され、ダウンロードボタンから結果を保存できる

設定の目安

  • 高画質 (CRF 23): 画質維持を最優先。削減率は 10〜30% 程度。保存用のマスター映像向け
  • 標準 (CRF 28): 視覚的な劣化は軽微。削減率 40〜70%。ウェブ掲載・SNS 共有に
  • 小さめ (CRF 32): 多少ぼやけるが容量優先。チャット添付・LINE・メール向け
  • 最小 (CRF 36): 輪郭が甘くなる。品質より「とにかく送れる」が最優先なとき

解像度は 100 / 75 / 50% から選べます。1080p の素材を 75% にすると、CRF を 1〜2 下げるより確実にサイズが落ちます。

仕組み — 二段構えのエンジン

Zerosend の動画圧縮は、単一のエンジンに依存していません。ブラウザの能力を見て、もっとも速い経路を自動で選びます。

1. WebCodecs (高速パス)

Chrome / Edge / 最近の Safari には WebCodecs API が実装されており、GPU 支援の H.264 エンコーダをブラウザから直接呼び出せます。Zerosend は対応環境では次のパイプラインで処理します。

  • mp4box.js で MP4 ファイルを demux
  • VideoDecoder でフレームを復号 (ハードウェアアクセラレーション)
  • 必要なら OffscreenCanvas でリサイズ
  • VideoEncoder で H.264 に再エンコード (GPU)
  • 音声はロスレスコピー (AAC のチャンクをそのまま維持)
  • mp4-muxer で MP4 に mux し、Blob として出力

これにより、数百 MB の動画も数十秒で処理できます。処理後の結果カードに「エンジン: webcodecs」と表示されれば、このパスが走っています。

2. ffmpeg.wasm (フォールバック)

WebCodecs が未対応のブラウザ、HEVC などの特殊なコーデック入力、mp4box が parse できない特殊コンテナのときは、自動的に ffmpeg.wasm に切り替わります。こちらは完全に CPU で処理するため速度は落ちますが、対応できるフォーマットの幅が段違いに広いのが強みです。ffmpeg-core は Cloudflare R2 から、同一オリジンのパスを経由して 32MB の WASM を取得します。初回のみ時間がかかりますが、2 回目以降はブラウザのキャッシュから復元されます。

よくある質問

Q. 処理中にインターネット接続が切れたら? A. 動画本体の送受信は発生しないため、圧縮処理自体は継続します。エンジン (ffmpeg.wasm) が未ロードの状態だと初回ダウンロードで失敗しますが、一度読み込んだあとはオフラインでも動作します。

Q. 結果のファイルはどこに保存されますか? A. ダウンロードボタンを押したときのブラウザの保存先です。サーバーには何も残りません。結果ファイルはタブを閉じるとメモリから消えます。

Q. 画質が思ったより落ちます。 A. CRF を下げる (例: 28 → 23)、または解像度の縮小をやめる (50% → 100%) と改善します。素材が 4K なら、100% のまま CRF を下げるより 75% + CRF 25 の方が視覚的なバランスが取れやすいです。

Q. iPhone で撮った MOV も処理できますか? A. はい。HEVC (H.265) の場合は ffmpeg.wasm 側のフォールバックに回るため時間がかかりますが、H.264 にトランスコードされた MP4 として出力されます。

関連ツール

Zerosend は「日常のちょっとした加工を、あなたの端末で完結させる」ことに徹したツール集です。動画の中身があなたの手元から離れないことを、DevTools で自分の目で確かめてから使ってみてください。


© Zerosend Editorial ← Blog Index

関連記事