見出し画像

FFmpegでよく使うコマンド集3

星杜なぎさです☆
本記事ではFFmpegで個人的によく使うコマンドを紹介します!

今回は、実用性重視です。

はじめに

前提条件など補足

変換元の動画情報

  • 動画の長さ : 1秒(正確には1.5秒ほどだが、切り捨て表示っぽい)

  • ビデオ

    • フレーム幅(width) : 1920

    • フレーム高(height) : 1080

    • フレーム率(FPS)  : 29.92frame/sec

  • オーディオ

    • チャンネル:2(ステレオ)

    • サンプリングレート:48000Hz

ファイル名「X.mp4」としております

FFmpegバージョン

  • ffmpeg version 6.1.1

1. 動画から画像を切り抜く

一番シンプルに動画から画像を切り抜くコマンド

ユースケース

  • 機械学習の学習元画像を、動画から作成する場合
    (特に、監視カメラやスマホで録画したものを用いる時、便利)

  • 動画投稿前に良いサムネを見つけたい時
    (映えそうな画像を、複数の画像から選ぶことができる)

コマンド

一番シンプルなものは、以下の通り

ffmpeg -i X.mp4 ./png/%05d.png

備考
%05dは、0埋め5桁の連番画像で出力する、という意味になる
(先に出力結果の画像ファイル名を見た方が、直観的に分かりやすいかと思います)

出力結果

00001.png~00045.pngまでの連番(合計45枚)の画像が抽出された
画像サイズは、動画元のフレーム幅とフレーム高がそのまま引き継がれる

元動画が29.92FPSなので、本当はこの動画は、1.504秒程度の長さだと分かる

よく使うオプション

ffmpeg -i X.mp4 -r 10 -ss 0 -t 1 ./png2/%03d.png
  • -r  :1秒当たり何枚の動画を切り出すか?を指定

  • -ss:切り抜き開始時間を指定

  • -t  :切り抜き開始時間から何秒分を切り抜き対象とするか?を指定

上記を組み合わせることで、どの区間から何枚の画像を抽出するか?が指定できる
ちなみに、%03dで指定したため、出力画像の名称が「0埋め3桁の連番」となっている

2. 連番画像から、動画を作成する

先ほどとは逆に、連番画像から、1つの動画ファイルを生成します
(ちなみに、Windows標準のメディアプレイヤーでは。2で生成された動画は再生できませんでした。
VLCでは再生できたので、動画生成は問題なくできているっぽいです)

ユースケース

  • 作成した機械学習モデルによる予測結果をまとめたい時
    (報告等の際に映えるので、オススメ)

コマンド

ffmpeg -i ./png/%%05d.png 10_merged.mp4

出力結果

デフォルトの場合、FPS=25となるようです
(また、なぜか動画のフレーム高が1072に変更されてます)

オプション

ffmpeg -r 29.92 -i ./png/%05d.png -s 1280x720 merged.mp4
  • r:動画のフレームレートをいくつにするか?を指定

  • -s:出力動画のフレーム幅とフレーム高を指定
      (-iより後ろで指定してください)

フレームレートとフレーム高、フレーム幅がそれぞれ指定した値になっている

3. 動画から音声を抽出する

ユースケース

  • 機械学習の学習用データを作成するとき

  • 動画コンテンツをAudioBookのように、携帯・使用したいとき

コマンド

ffmpeg -i X.mp4 X.wav

出力結果

動画からオーディオファイルに変換できていることを確認
(サンプリングレート、チャネル数(channels)は未指定の場合、
 そのまま引き継がれる)

ffprobeコマンドで確認すると、48000Hz、2 channelsになっていることが分かる

よく使うオプション

ffmpeg -i X.mp4 -ac 1 -ar 8000 X_mono.wav
  • -ac:出力チャンネル指定(1:モノラル、2:ステレオ)

  • -ar:オーディオのサンプリングレート(8000 = 8000Hz)

4. 動画に画像を埋め込む

ユースケース

  • 投稿する動画の右下に、アイコン等を表示(生産者表示)を埋め込む

コマンド

動画を1つ目の-iに、埋め込む画像を2つ目の-iの後に指定します

ffmpeg -i X.mp4 -i icon.png -filter_complex "overlay=W-w-10:H-h-10" add_image.mp4

出力結果

右下に画像が埋め込まれていることを確認

以上。



この記事が気に入ったらサポートをしてみませんか?