Skip to content

FFmpeg入門チュートリアル:初心者向け30の実践コマンド

FFmpegは動画処理のスイスアーミーナイフです。コマンドライン一つでフォーマット変換、圧縮、結合、切り取り、スクリーンショット、ストリーミングなどほぼすべての動画処理ができます。このチュートリアルでは、インストールから30の実用コマンドまでをカバーします。

FFmpegとは

FFmpegは1993年にスタートしたオープンソースのマルチメディア処理フレームワークです:

  • 包括的:エンコード、デコード、変換、ストリーミング、フィルタリング
  • クロスプラットフォーム:Windows、macOS、Linux
  • 無料:LGPL/GPLライセンス
  • 強力:VLC、OBS、YouTube、Netflixが内部で使用

コアコンポーネント

  • ffmpeg:メインプログラム、変換と処理
  • ffprobe:メタデータ分析
  • ffplay:シンプルなプレビュー
  • libavcodec:コーデックライブラリ
  • libavformat:コンテナライブラリ
  • libavfilter:フィルターライブラリ

インストール

macOS

bash
brew install ffmpeg

Ubuntu/Debian

bash
sudo apt update
sudo apt install ffmpeg

Windows

  1. ffmpeg.orgからダウンロード
  2. 解凍して任意のディレクトリに配置
  3. PATHに追加

インストール確認

bash
ffmpeg -version
ffprobe -version

基本概念

コマンド構文

bash
ffmpeg [入力オプション] -i 入力ファイル [出力オプション] 出力ファイル

重要なパラメータ

パラメータ説明
-i入力ファイル-i input.mp4
-c:vビデオコーデック-c:v libx264
-c:aオーディオコーデック-c:a aac
-b:vビデオビットレート-b:v 4M
-b:aオーディオビットレート-b:a 128k
-crf品質(H.264/H.265)-crf 23
-presetエンコード速度-preset slow
-vfビデオフィルター-vf "scale=1280:720"
-afオーディオフィルター-af "volume=2"
-ss開始時間-ss 00:01:00
-t長さ-t 60
-rフレームレート-r 30
-s解像度-s 1280x720
-vnビデオなし-vn
-anオーディオなし-an
-c copyストリームコピー-c copy

30の実用コマンド

フォーマット変換(1-5)

1. MP4からMKVへ

bash
ffmpeg -i input.mp4 -c copy output.mkv

2. MKVからMP4へ

bash
ffmpeg -i input.mkv -c:v libx264 -c:a aac output.mp4

3. WebMからMP4へ

bash
ffmpeg -i input.webm -c:v libx264 -crf 23 -c:a aac output.mp4

4. AVIからMP4へ

bash
ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac output.mp4

5. MOVからMP4へ

bash
ffmpeg -i input.mov -c:v libx264 -crf 23 -c:a aac output.mp4

圧縮と品質(6-10)

6. H.264圧縮

bash
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k output.mp4

7. H.265圧縮(より小さい)

bash
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -preset slow -c:a aac -b:a 128k output.mp4

8. 解像度変更

bash
# 720p
ffmpeg -i input.mp4 -vf "scale=-1:720" -c:v libx264 -crf 23 -c:a aac output.mp4

# 480p
ffmpeg -i input.mp4 -vf "scale=-1:480" -c:v libx264 -crf 23 -c:a aac output.mp4

9. フレームレート変更

bash
# 30fps
ffmpeg -i input.mp4 -r 30 -c:v libx264 -crf 23 -c:a aac output.mp4

# 24fps(シネマ風)
ffmpeg -i input.mp4 -r 24 -c:v libx264 -crf 23 -c:a aac output.mp4

10. ビットレート指定

bash
ffmpeg -i input.mp4 -c:v libx264 -b:v 4M -maxrate 4M -bufsize 8M -c:a aac -b:a 128k output.mp4

切り取りと結合(11-15)

11. 時間で切り取り

bash
# 1分から5分間
ffmpeg -ss 00:01:00 -t 00:05:00 -i input.mp4 -c copy output.mp4

# 1分から最後まで
ffmpeg -ss 00:01:00 -i input.mp4 -c copy output.mp4

12. 結合(concat demuxer)

bash
# list.txt
# file 'part1.mp4'
# file 'part2.mp4'

ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4

13. スクリーンショット

bash
# 1秒目のフレーム
ffmpeg -ss 1 -i input.mp4 -vframes 1 output.png

# 5秒目
ffmpeg -ss 5 -i input.mp4 -vframes 1 output.jpg

# 10秒ごとにスクリーンショット
ffmpeg -i input.mp4 -vf "fps=1/10" screenshot_%03d.png

14. GIF作成

bash
# 基本GIF
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1" output.gif

# 高品質GIF(二段階)
ffmpeg -i input.mp4 -vf "palettegen" palette.png
ffmpeg -i input.mp4 -i palette.png -filter_complex "paletteuse" output.gif

15. 画像からビデオ作成

bash
# 画像シーケンスからビデオ
ffmpeg -framerate 30 -i image_%03d.png -c:v libx264 -crf 23 output.mp4

# 単一画像から10秒のビデオ
ffmpeg -loop 1 -i image.jpg -t 10 -c:v libx264 -crf 23 output.mp4

音声処理(16-20)

16. 音声抽出

bash
# MP3に抽出
ffmpeg -i input.mp4 -vn -acodec libmp3lame -b:a 192k output.mp3

# AACに抽出
ffmpeg -i input.mp4 -vn -acodec aac -b:a 192k output.m4a

17. 音声追加

bash
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -shortest output.mp4

18. 音声置換

bash
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -map 0:v -map 1:a output.mp4

19. 音量調整

bash
# 2倍の音量
ffmpeg -i input.mp4 -af "volume=2" -c:v copy output.mp4

# 半分の音量
ffmpeg -i input.mp4 -af "volume=0.5" -c:v copy output.mp4

20. 音声正規化

bash
ffmpeg -i input.mp4 -af "loudnorm=I=-16:TP=-1.5:LRA=11" -c:v copy output.mp4

ストリーミング(21-25)

21. HLSスライス

bash
ffmpeg -i input.mp4 -c copy -f hls -hls_time 6 -hls_segment_filename "segment_%03d.ts" playlist.m3u8

22. AES-128暗号化HLS

bash
ffmpeg -i input.mp4 -c copy -f hls -hls_time 6 -hls_key_info_file key_info.txt -hls_segment_filename "segment_%03d.ts" playlist.m3u8

23. DASHセグメント

bash
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f dash -seg_duration 2 output.mpd

24. RTMPプッシュ

bash
ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -b:v 4000k -c:a aac -b:a 128k -f flv "rtmp://server/live/key"

25. スクリーン録画

bash
# Linux
ffmpeg -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0 output.mp4

# macOS
ffmpeg -f avfoundation -framerate 30 -i "1" output.mp4

高度な処理(26-30)

26. 字幕追加

bash
# ソフト字幕
ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s mov_text output.mp4

# ハード字幕
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt" -c:a copy output.mp4

27. ウォーターマーク追加

bash
# 右下にロゴ
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=W-w-10:H-h-10" -c:a copy output.mp4

28. ビデオ回転

bash
# 90度回転
ffmpeg -i input.mp4 -vf "transpose=1" -c:a copy output.mp4

# 180度回転
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" -c:a copy output.mp4

29. クロップ

bash
# 中央16:9領域をクロップ
ffmpeg -i input.mp4 -vf "crop=1920:1080:0:0" -c:a copy output.mp4

30. メタデータ確認

bash
ffprobe -v error -show_format -show_streams -of json input.mp4

よくあるエラーと解決策

エラー原因解決策
Unknown encoderコーデック未サポートFFmpegを再コンパイル
Invalid data found入力ファイル破損ファイルを確認
Conversion failedパラメータエラーコマンドを確認
No such fileファイルパスエラーパスを確認
Permission denied権限不足権限を確認

まとめ

FFmpegは動画処理の強力なツールです。このチュートリアルで紹介した30のコマンドは、日常的な動画処理の90%をカバーします:

  • フォーマット変換: -c copyで無劣化、-c:v libx264で再エンコード
  • 圧縮: -crfで品質制御、-presetで速度制御
  • 切り取り: -ss-tで時間指定
  • 結合: concat demuxerを使用
  • ストリーミング: -f hls-f dash-f flv

クイックリファレンス:

  • 基本構文: ffmpeg -i input.mp4 [オプション] output.mp4
  • 無劣化コピー: -c copy
  • H.264圧縮: -c:v libx264 -crf 23
  • HLSスライス: -f hls -hls_time 6
  • メタデータ: ffprobe -show_format -show_streams

参考文献

最終更新: