シェルを使ってffmpegで一気に複数画像ファイルをガンマ補正する方法

Linux

本記事ではLinux環境でffmpegにディレクトリ内の複数画像ファイルを入力し、全ての画像に一括でガンマ補正をかけるシェルを考えたので、備忘録として残しておきます。

大量に画像ファイルがあって、その画像ファイルを一気に何かしらの加工処理をしたいって時におすすめの方法です。

WindowsでもCygwinなどでシェルを使えるようにすれば再現可能と思います。

Macもシェルは使えるのでMacでも再現可能です。

実行環境

OS:CentOS Linux release 7.8.2003(Core)

ffmpeg:3.4.8

ディレクトリ構成

img
|-test1.jpg
|-test2.jpg
|-test3.jpg

output

imgというディレクトリの下にtest1~3というファイル名のjpegファイルが3ついるイメージです。

outputはffmpegでガンマ補正した画像を出力するためのディレクトリです。

事前に作成しておいてください。

実行コマンド

ls img/* | xargs -I {} ffmpeg -i {} -vf eq=gamma=3 output/{}

コマンドを解説します。

  1. ls img/*でimgディレクトリ配下のファイル名を取得します。
  2. 1で取得したファイル名をパイプ「|」を使ってxargsに渡します。
  3. xargs -I {}で{}の部分に複数取得したファイル名が1つずつ渡されます。
  4. 一つ目のファイル名がffmpeg -iのインプットファイル名として{}に代入されます。
  5. eq=gamma=3はガンマ補正を行うためのオプションです。3のところは好きにいじってください。
  6. output/{}とすることでffmpegによってガンマ補正された画像ファイルを入力ファイル名と同じファイル名でoutputディレクトリ直下に出力します。

コマンド出力結果

上記コマンドを実行するとガンマ補正されたファイルが以下のように出力されています。

output
|-test1.jpg
|-test2.jpg
|-test3.jpg

まとめ

Linux環境でffmpegにディレクトリ内の複数画像ファイルを入力し、全ての画像にガンマ補正をかけるシェルを紹介しました。

応用することでガンマ補正、彩度、明度などの調整ができます。

WindowsでもCygwinやgitbashを入れることで同じコマンドが実行できるようになると思います。

参考になればうれしいです。

うみうま
うみうま

xargsがまじで使えるのでおすすめです!

Linux初心者おすすめ本↓

コメント