【FFmpeg活用術】動画を「指定した容量」に圧縮する方法(Mac/Win対応)
【FFmpeg活用術】動画を「指定した容量」に圧縮する方法(Mac/Win対応)
「動画のファイルサイズが大きすぎてアップロードできない」「〇MB以下にしたい」— そんな悩みを一発で解決できるのが、高機能な動画編集ツール**「FFmpeg(エフエフエムペグ)」**です。
この記事では、「目標とするサイズ(例:24MB)」に合わせて最適な圧縮率を自動で計算し、エンコードする最も確実な方法を解説します。
仕組み:なぜ正確なサイズにできるのか?
ファイルサイズを正確にコントロールするには、「2パスエンコード」という方法と「ビットレートの計算」が必要です。
動画のファイルサイズは、主に以下の式で決まります。
つまり、目標のファイルサイズを動画の長さで割ることで、必要な目標ビットレートが逆算できます。
- 1パス目: 動画全体を分析し、どこを強く圧縮し、どこを弱く圧縮するか(=ビットレートをどれだけ割り振るか)の戦略を立てます。
- 2パス目: 1パス目の戦略に基づいてエンコードを実行します。これにより、最終的なファイルサイズが目標値に非常に近くなります。
💻 準備:ツールのインストール(Mac/Windows)
FFmpegと、動画の長さの計測に使用するffprobe
は、通常セットで提供されます。
🍎 Mac (iTerm2/Terminal)
Homebrewを使うのが最も簡単で確実です。
brew install ffmpeg
🪟 Windows (PowerShell/WSL)
Windowsでは、パッケージ管理ツール**Chocolatey (Choco)**を使う方法が簡単です。
- Chocolateyのインストール: 管理者としてPowerShellを開き、公式サイトの手順に従ってインストールします。
- FFmpegのインストール: PowerShellで以下のコマンドを実行します。
choco install ffmpeg
🛠️ ステップ1:動画の長さを測る
まず、圧縮したい動画ファイルの正確な長さ(秒)が必要です。
コマンド例(Mac/Win共通)
以下のコマンドで、**/path/to/input_video.mp4
**をあなたのファイルパスに置き換えて実行してください。
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 /path/to/input_video.mp4
実行結果の確認 |
---|
このコマンドを実行すると、動画の長さが秒単位で出力されます。(例: 124.400000 秒) |
この結果の値を**
🧮 ステップ2:目標ビットレートの計算
今回の目標は、元の30MBを24MBにすることです。動画の長さ
-
目標総ビットレート
\text{総ビットレート}(kbit/s) = \frac{\text{目標サイズ}(MB) \times 8192}{\text{長さ}(秒)} \text{総ビットレート} = \frac{24 \times 8192}{124.4} \approx 1577.8\ kbit/s -
目標ビデオビットレートの決定
音声に128kbit/sを割り当てると仮定し、総ビットレートから差し引きます。
\text{ビデオビットレート} = 1577.8 - 128 = 1449.8\ kbit/s
四捨五入して、**1450k
**を使用します。
これで、目標サイズの24MBに最も近づけるためのキーとなる数値が1450kと確定しました。
🚀 ステップ3:2パスエンコードの実行
計算したビットレート**1450k
を使って、以下の2つのコマンドを必ず順番に実行**します。
1. パス1:分析実行(出力ファイルは生成されません)
🍎 Mac (iTerm2/Terminal)
ffmpeg -y -i /Users/yourname/Videos/original_video.mp4 \
-c:v libx264 -b:v 1450k -pass 1 \
-preset medium \
-an -f mp4 /dev/null
-
-f mp4 /dev/null
: Mac/Linuxでは出力を破棄します。
🪟 Windows (PowerShell)
ffmpeg -y -i "C:\Users\yourname\Videos\original_video.mp4" \
-c:v libx264 -b:v 1450k -pass 1 \
-preset medium \
-an -f mp4 NUL
-
-f mp4 NUL
: WindowsではNUL
を使用します。
2. パス2:本エンコード(最終ファイル生成)
このコマンドで最終的な圧縮ファイルが出力されます。
🍎 Mac (iTerm2/Terminal)
ffmpeg -i /Users/yourname/Videos/original_video.mp4 \
-c:v libx264 -b:v 1450k -pass 2 \
-preset medium \
-c:a aac -b:a 128k \
/Users/yourname/Videos/compressed_video_24MB.mp4
🪟 Windows (PowerShell)
ffmpeg -i "C:\Users\yourname\Videos\original_video.mp4" \
-c:v libx264 -b:v 1450k -pass 2 \
-preset medium \
-c:a aac -b:a 128k \
"C:\Users\yourname\Videos\compressed_video_24MB.mp4"
パス2で使用したオプションの意味
---
コマンドオプション:
-i: 動画の入力ファイルパス
-c:v libx264: 動画コーデックにH.264を使用(互換性が高い)
-b:v 1450k: 計算した目標ビデオビットレートを設定
-pass 2: 2回目の本エンコードパスを指定
-preset medium: エンコードの速度と画質のバランス設定
-c:a aac: 音声コーデックにAACを使用
-b:a 128k: 音声ビットレートを128kbit/sに設定
出力ファイル名: 圧縮後のファイルパス
この手順により、ファイルサイズは24MBの目標に非常に近くなります。ぜひ、目標とする容量に合わせてビットレートを計算し、試してみてください!
Discussion