1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【FFmpeg活用術】動画を「指定した容量」に圧縮する方法(Mac/Win対応)

1
Posted at

【FFmpeg活用術】動画を「指定した容量」に圧縮する方法(Mac/Win対応)

kiji-style--FFMPEG.jpg

「動画のファイルサイズが大きすぎてアップロードできない」「〇MB以下にしたい」— そんな悩みを一発で解決できるのが、高機能な動画編集ツール**「FFmpeg(エフエフエムペグ)」**です。

この記事では、「目標とするサイズ(例:24MB)」に合わせて最適な圧縮率を自動で計算し、エンコードする最も確実な方法を解説します。


🎯 仕組み:なぜ正確なサイズにできるのか?

ファイルサイズを正確にコントロールするには、「2パスエンコード」という方法と「ビットレートの計算」が必要です。

動画のファイルサイズは、主に以下の式で決まります。
$$\text{ファイルサイズ} \approx \text{ビットレート} \times \text{動画の長さ}$$

つまり、目標のファイルサイズを動画の長さで割ることで、必要な目標ビットレートが逆算できます。

  • 1パス目: 動画全体を分析し、どこを強く圧縮し、どこを弱く圧縮するか(=ビットレートをどれだけ割り振るか)の戦略を立てます。
  • 2パス目: 1パス目の戦略に基づいてエンコードを実行します。これにより、最終的なファイルサイズが目標値に非常に近くなります。

💻 準備:ツールのインストール(Mac/Windows)

FFmpegと、動画の長さの計測に使用するffprobeは、通常セットで提供されます。

🍎 Mac (iTerm2/Terminal)

Homebrewを使うのが最も簡単で確実です。

brew install ffmpeg

🪟 Windows (PowerShell/WSL)

Windowsでは、パッケージ管理ツール**Chocolatey (Choco)**を使う方法が簡単です。

  1. Chocolateyのインストール: 管理者としてPowerShellを開き、公式サイトの手順に従ってインストールします。
  2. 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 秒)

この結果の値を**$T$**(秒)として、次の計算に使用します。


🧮 ステップ2:目標ビットレートの計算

今回の目標は、元の30MBを24MBにすることです。動画の長さ$T = 124.4$秒として計算します。

  1. 目標総ビットレート
    $$\text{総ビットレート}(kbit/s) = \frac{\text{目標サイズ}(MB) \times 8192}{\text{長さ}(秒)}$$ $$\text{総ビットレート} = \frac{24 \times 8192}{124.4} \approx 1577.8\ kbit/s$$

  2. 目標ビデオビットレートの決定
    音声に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の目標に非常に近くなります。ぜひ、目標とする容量に合わせてビットレートを計算し、試してみてください!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?