FFmpegとは
動画編集ソフト開発の核となるツール
FFmpegとは何か
FFmpeg(エフエフエムペグ)は、動画・音声ファイルを処理するための無料のコマンドラインツールです。
2000年から開発が続けられ、現在も活発に更新されています。 動画編集ソフトを作る場合、FFmpegを使うことで動画処理を自分で実装する必要がなくなります。
簡単に言うと
FFmpegは「動画処理の万能ナイフ」です。
カット、変換、結合、エフェクト適用など、動画に対するほぼ全ての操作ができます。
FFmpegを使っているソフトウェア
FFmpegを使っている
- ・ VLC Media Player - 動画プレーヤー
- ・ OBS Studio - 配信ソフト
- ・ HandBrake - 動画変換ソフト
- ・ Kdenlive / Shotcut - 動画編集ソフト
- ・ LosslessCut - カット専用ソフト
- ・ YouTube / TikTok - サーバー側処理
FFmpegを使っていない(独自エンジン)
- ・ Adobe Premiere Pro
- ・ DaVinci Resolve
- ・ Final Cut Pro
※ これらは大企業が独自開発した商用ソフト
なぜFFmpegを使うのか
1. 複雑な処理が不要
動画のデコード・エンコードは非常に複雑な技術。 FFmpegを使えば、たった1行のコマンドで処理できる。
2. ほぼ全形式に対応
MP4, MKV, WebM, MOV, AVI, GIF, MP3, AAC... ほぼ全ての動画・音声形式を処理可能。
3. どのOSでも動く
Windows, Linux, macOS全てで同じコマンドが動く。 OS間の差を気にする必要がない。
インストール方法
Linux (Ubuntu/Debian)
sudo apt install ffmpeg
macOS
brew install ffmpeg
# インストール確認
ffmpeg -version
基本的な使い方
FFmpegはコマンドライン(ターミナル)で使います。基本形式は:
ffmpeg -i 入力ファイル [オプション] 出力ファイル
動画をカット(切り抜き)
bash
# 開始10秒から30秒間を切り出し
ffmpeg -i input.mp4 -ss 10 -t 30 -c copy output.mp4-i = 入力ファイル
-ss 10 = 開始位置(10秒目から)
-t 30 = 長さ(30秒間)
-c copy = 再エンコードせずコピー(高速)
フォーマット変換
bash
# MOVからMP4に変換
ffmpeg -i input.mov output.mp4
# WebMに変換(Web向け)
ffmpeg -i input.mp4 output.webm出力ファイル名の拡張子を変えるだけで自動的に変換されます。
解像度変更
bash
# 1280x720(HD)にリサイズ
ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4
# 幅1920に合わせて高さは自動調整
ffmpeg -i input.mp4 -vf "scale=1920:-1" output.mp4音声だけ抽出
bash
# MP3で抽出
ffmpeg -i input.mp4 -vn output.mp3-vn = 映像なし(video none)
プログラムから使う方法
動画編集ソフトを作る場合、プログラムからFFmpegを呼び出します。 どの言語でも「サブプロセス」として実行するだけで使えます。
Python(推奨)
python
import subprocess
def cut_video(input_path, output_path, start, duration):
subprocess.run([
'ffmpeg',
'-i', input_path,
'-ss', str(start),
'-t', str(duration),
'-c', 'copy',
output_path
])
# 使用例: 10秒目から30秒間をカット
cut_video('input.mp4', 'output.mp4', 10, 30)Rust
rust
use std::process::Command;
fn cut_video(input: &str, output: &str, start: u32, duration: u32) {
Command::new("ffmpeg")
.args(["-i", input, "-ss", &start.to_string(),
"-t", &duration.to_string(), "-c", "copy", output])
.output()
.expect("FFmpeg failed");
}JavaScript (Node.js)
javascript
const { spawn } = require('child_process');
function cutVideo(input, output, start, duration) {
const ffmpeg = spawn('ffmpeg', [
'-i', input,
'-ss', start.toString(),
'-t', duration.toString(),
'-c', 'copy',
output
]);
}まとめ
- ✓ FFmpegは動画処理の業界標準ツール
- ✓ コマンドライン1行で動画処理ができる
- ✓ プログラムから簡単に呼び出せる(subprocess)
- ✓ 動画編集ソフト開発では必須の知識