MP4(MPEG-4 Part 14)は、現代のデジタル動画のデファクトスタンダードです。スマートフォン、デジタルカメラ、ストリーミングサービス、監視カメラ——ほぼすべてのデバイスがMP4を出力します。しかし、その汎用性の裏側に潜む問題がファイルサイズの肥大化です。4K 60fpsで5分撮影すれば1GBを超えることも珍しくありません。
この問題を解決する手段がMP4圧縮です。特にオフライン環境での圧縮は、インターネット接続不要、プライバシー完全保護、高速処理という3大メリットを兼ね備えています。
MP4の構造とコンテナの役割
MP4はコンテナ形式です。動画(H.264/H.265)、音声(AAC)、字幕、メタデータを1つのファイルに格納します。
text
┌─────────────────────┐
│ MP4 コンテナ │
├────────┬────────────┤
│ 動画軌道│ H.264/AVC │
│ 音声軌道│ AAC LC │
│ 字幕軌道│ 3GPP Timed │
│ メタデータ│ ISO/IEC 14496│
└────────┴────────────┘
この柔軟性が普及の理由ですが、同時に冗長データを生みやすい構造でもあります。
MP4が肥大化する3つの要因
| 要因 | 説明 | 例 |
|---|---|---|
| 高ビットレート | 画質優先のエンコード | 4K 50Mbps |
| 可変フレームレート(VFR) | 録画時のフレームドロップ | スマホ撮影 |
| 未圧縮音声 | PCM音声の混入 | 48kHz 16bit |
オフライン圧縮の絶対的優位性
オンライン圧縮ツールの問題点
| 問題 | 詳細 |
|---|---|
| プライバシー漏洩 | 動画がクラウドにアップロードされる |
| 通信制限 | 1GBの動画をWi-Fiなしで送信不可 |
| 処理待ち | サーバー混雑で数時間待機 |
| 透かし強制 | 無料プランでロゴ挞入 |
オフライン圧縮の8大メリット
- ゼロ通信コスト
- 即時処理開始
- GPUフル活用(NVENC/QuickSync)
- バッチ処理可能(100ファイル一括)
- カスタムスクリプト化
- 電源断対策(進捗保存)
- 企業内機密動画対応
- 災害時でも使用可能
圧縮の科学:ロスレス vs ロッシー
ロスレス圧縮の限界
| アルゴリズム | 圧縮率 | CPU負荷 |
|---|---|---|
| FFV1 | 2-3倍 | 極高 |
| HuffYUV | 1.5-2倍 | 高 |
→ 実用的ではない(4Kで数TB必要)
ロッシー圧縮のメカニズム
- DCT変換(離散コサイン変換)
- 量子化(人間の目で気づきにくい周波数を削減)
- 動き予測(P/Bフレーム)
- エントロピー符号化(ハフマン/VLC)
text
元フレーム → 動き補償 → 残差 → DCT → 量子化 → 符号化 → MP4
ビットレートと画質の黄金比
| 解像度 | 推奨ビットレート | 用途 |
|---|---|---|
| 480p | 800-1200kbps | メール |
| 720p | 1500-2500kbps | SNS |
| 1080p | 3000-5000kbps | YouTube |
| 4K | 12000-25000kbps | アーカイブ |
オフライン圧縮ツール大全(20選)
1. HandBrake:GUIの王者
詳細機能解説
- プリセット:120種類以上(AppleTV、Roku、Discord対応)
- フィルタ:
- デインターレース(Comb Detect / Yadif)
- デノイズ(NLMeans / HQDN3D)
- デブロック
- ハードウェアエンコード:
- NVENC(NVIDIA 6xxxシリーズ以上)
- QSV(Intel 6th Gen以上)
- VCE(AMD RXシリーズ)
究極の設定例(1080p 30fps, 85%圧縮)
json
{
"Preset": "HQ 1080p30 Surround",
"VideoEncoder": "x264",
"VideoFramerate": "30",
"VideoTune": "film",
"VideoOptionExtra": "ref=5:bframes=5:me=umh:merange=24:subme=10",
"x264Preset": "slow",
"x264Profile": "high",
"VideoAvgBitrate": 3200,
"VideoTwoPass": true,
"AudioCopy": false,
"AudioEncoder": "av_aac",
"AudioBitrate": 160,
"AudioMixdown": "dpl2",
"ChapterMarkers": true
}
2. FFmpeg:コマンドラインの神
インストール詳細
Windows(winget)
powershell
winget install ffmpeg
macOS(Conda)
bash
conda install -c conda-forge ffmpeg
100の圧縮パターン
- 超高速(リアルタイム)
bash
ffmpeg -i input.mp4 -c:v h264_nvenc -preset fast -b:v 2500k output.mp4
- 最高画質(CRF 18)
bash
ffmpeg -i input.mp4 -c:v libx264 -preset veryslow -crf 18 -c:a aac -b:a 192k output.mp4
- アニメ向け(フラット領域最適化)
bash
ffmpeg -i input.mp4 -vf "hqdn3d=3:3:4:4" -c:v libx264 -tune animation -crf 22 output.mp4
バッチ処理スクリプト(1000ファイル)
bash
#!/bin/bash
for file in *.mp4; do
ffmpeg -i "$file" -c:v libx264 -crf 23 -preset fast -c:a aac -b:a 128k "compressed/${file%.*}.mp4"
done
3. Shutter Encoder:FFmpegのGUI版
- ドラッグ&ドロップ対応
- ハードウェア検出自動化
- 出力プロファイル:TikTok、Instagram Reels最適化
4. Shotcut:編集+圧縮
高度フィルタスタック
- GPU処理 → gpufilter
- LUT適用 → シネマティック補正
- オーディオコンプレッサー → 音量均一化
5. Avidemux:軽量シンプル
- カット編集+再エンコードなし(コピー圧縮)
- VFR→CFR変換フィルタ内蔵
モバイルオフライン圧縮(Android/iOS)
Androidアプリ詳細
| アプリ | 最大解像度 | バッチ | GPU |
|---|---|---|---|
| YouCut | 4K | ○ | ○ |
| CapCut | 4K | ○ | ○ |
| VN | 4K | ○ | ○ |
YouCut 高度テクニック
- カスタム解像度:1920×1080 → 1280×720
- H.265エンコード:50%追加圧縮
- 音声除去:BGM差し替えで-30MB
画質評価の科学
客観的指標
| 指標 | 計算式 | 理想値 |
|---|---|---|
| PSNR | 10*log10(MAX^2/MSE) | >40dB |
| SSIM | (2μxμy+C1)(2σxy+C2)/(μx²+μy²+C1)/(σx²+σy²+C2) | >0.98 |
| VMAF | Netflix開発 | >93 |
FFmpegでVMAF測定
bash
ffmpeg -i original.mp4 -i compressed.mp4 -lavfi libvmaf="model=path=model/vmaf_v0.6.1.pkl" -f null -
実践ケーススタディ
ケース1:監視カメラ映像(30日分)
- 元:720p 15fps, 1日12GB → 360GB
- 圧縮:480p 10fps, CRF 28 → 1日1.2GB(90%減)
- 保持期間:30日 → 300日に延長
ケース2:結婚式ムービー(4K 60fps)
- 元:120GB(3時間)
- 目標:Blu-ray 1枚(25GB)
- 手法:
- 1080p 30fps変換
- 2パスVBR(平均8Mbps)
- 音声AC3 5.1ch
- 結果:22GB(81%圧縮)、プロ級画質
トラブルシューティング完全版
| 症状 | 原因 | 解決 |
|---|---|---|
| 音ズレ | VFR | -r 30 |
| ブロックノイズ | 低ビットレート | CRF↓ or 2pass |
| 緑画面 | 古いプレーヤー | -pix_fmt yuv420p |
| 処理中断 | メモリ不足 | -threads 4 |
| ファイル破損 | 停電 | –recovery |
応用テクニック
1. セグメント圧縮+マージ
bash
# 10分ごとに分割
ffmpeg -i input.mp4 -c copy -map 0 -segment_time 600 -f segment part%03d.mp4
# 並列圧縮
parallel ffmpeg -i {} -c:v libx264 -crf 23 compressed_{} ::: part*.mp4
# 再マージ
ffmpeg -f concat -i list.txt -c copy final.mp4
2. 条件付き圧縮(サイズ指定)
bash
TARGET=100M # 100MB
SIZE=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4)
BITRATE=$(( TARGET * 8192 / SIZE ))
ffmpeg -i input.mp4 -b:v ${BITRATE}k output.mp4
将来の圧縮技術
| 技術 | 圧縮率 | 対応状況 |
|---|---|---|
| AV1 | H.264の2倍 | FFmpeg 4.4+ |
| VVC | H.265の1.5倍 | 実験段階 |
| LCEVC | +30%効率 | 商用化済 |
結論:オフライン圧縮マスターへの道
- 目的定義(画質 vs サイズ)
- ツール選択(HandBrake → FFmpeg)
- テスト圧縮(10秒クリップ)
- 本番実行(バッチ処理)
- 品質検証(VMAF > 90)
オフラインMP4圧縮は、デジタルライフの必需スキルです。ストレージを節約し、共有を高速化し、プライバシーを守る——これらすべてを無料で実現できます。
今すぐHandBrakeをダウンロードし、最初の動画を圧縮してみてください。1GBが100MBになる感動を、あなたの手で体験してください。





