🎬

FFmpegコマンド入門:動画・音声・画像を自在に操る

に公開

概要

FFmpeg は、動画や音声、画像を扱うための非常に強力なコマンドラインツールです。この記事では、FFmpeg の基本的な考え方と、よく使われる便利なコマンド例をまとめます。

FFmpeg とは?

FFmpeg(エフエフエムペグ)は動画と音声を記録・変換・再生するためのフリーソフトウェアである。
引用:Wikipedia

コマンドラインから実行することで、動画や音声のフォーマット変換、結合、切り出し、音声抽出、GIF作成、字幕追加など、ありとあらゆる操作が可能です。Webサービスやバッチ処理などで、メディアファイルを自動的に加工する際に広く利用されています。

基本的な使い方

FFmpeg のコマンドは基本的に以下の構造になっています。

ffmpeg [グローバルオプション] -i [入力ファイル] [コーデック等のオプション] [出力ファイル]
  • -i: 入力ファイルを指定するオプションです。複数指定することも可能です。

基本的な考え方:入力と出力

FFmpeg の処理は、「入力 (Input)」を受け取り、何らかの処理を施して、「出力 (Output)」を生成するという流れが基本です。

例えば、以下のような処理が考えられます。

  • 画像(入力A) + 音声(入力B)動画(出力)
  • 動画(入力)音声(出力)
  • 動画(入力A) + 動画(入力B)結合された動画(出力)

よく使うコマンド例

1. フォーマット変換

動画のコンテナフォーマットを変換します。例えば、MOV ファイルを MP4 ファイルに変換します。

ffmpeg -i input.mov output.mp4

FFmpeg は拡張子からフォーマットを推測してくれるため、これだけで変換が可能です。

2. 動画から音声を抽出

動画ファイルから音声トラックだけを抜き出して、MP3 ファイルとして保存します。

# -vn: ビデオを無効にする
# -acodec libmp3lame: 音声コーデックにMP3を指定
ffmpeg -i input.mp4 -vn -acodec libmp3lame output.mp3

-acodec copy を使うと、再エンコードせずに元の音声データをそのまま抽出できるため、高速で品質の劣化もありません。

ffmpeg -i input.mp4 -vn -acodec copy output.aac

3. 画像と音声を結合して動画を作成

一枚の画像と音声ファイルから、音声が流れている間その画像を表示し続ける動画を作成します。

# -loop 1: 画像をループさせる
# -t [duration]: 出力動画の長さを指定(音声の長さに合わせる)
# -c:v libx264: ビデオコーデックにH.264を指定
# -tune stillimage: 静止画用に最適化
# -c:a aac: 音声コーデックにAACを指定
# -pix_fmt yuv420p: 再生互換性の高いピクセルフォーマットを指定
# -shortest: 最も短い入力(この場合は音声)の長さに合わせて出力を終了
ffmpeg -loop 1 -i image.jpg -i audio.mp3 -c:v libx264 -tune stillimage -c:a aac -pix_fmt yuv420p -shortest output.mp4

4. 動画の解像度を変更 (リサイズ)

動画のサイズを幅640px、高さ360pxに変更します。

# -vf (video filter) を使って scale フィルタを適用
# -1 を指定すると、アスペクト比を維持したまま自動で計算される
ffmpeg -i input.mp4 -vf scale=640:-1 output_640.mp4

5. 動画を切り出す

動画の特定の部分だけを切り出します。

# -ss (seek start): 開始時間 (HH:MM:SS)
# -t (time): 切り出す長さ(秒)
# -c copy: 再エンコードしない(高速)
ffmpeg -i input.mp4 -ss 00:01:30 -t 10 -c copy output_cut.mp4

この例では、1分30秒の地点から10秒間を切り出しています。

6. GIF アニメーションを作成

動画の一部を GIF アニメーションに変換します。

# -vf "fps=10,scale=320:-1:flags=lanczos" : フレームレートを10にし、幅320pxにリサイズ
ffmpeg -i input.mp4 -ss 00:00:10 -t 3 -vf "fps=10,scale=320:-1:flags=lanczos" output.gif

まとめ

FFmpeg は非常に多機能で、オプションも膨大にありますが、基本的な考え方とよく使うパターンをいくつか覚えておくだけで、多くのメディア処理タスクを自動化できます。公式ドキュメントや Web 上の豊富なリソースを参考に、ぜひ活用してみてください。


この記事はAIによって修正・追記されました。

Discussion