ffmpegで画像ファイルの形式を変換する
目次
Macのターミナル上で、ffmpegを使って画像ファイル形式を変換する方法を紹介します。
基本的な使い方から、出力ファイル名を指定しない方法や、一括変換する方法なども。
ffmpegの基本式
もっともシンプルな基本式です。
ffmpeg -i 入力ファイル名 出力ファイル名
オプションがある場合はこちら。
ffmpeg 入力オプション -i 入力ファイル名 出力オプション 出力ファイル名
画像ファイルの形式を変換する
input.jpg
をoutput.jpg
に変換する場合のコードです。
ffmpeg -i input.jpg output.png
画像ファイルの形式を、出力ファイル名を指定せずに変換する
input.jpg
をpng画像に変換する場合のコードです。
for f in input.jpg;
do
ffmpeg -i $f ${f%.jpg}.png;
done
画像ファイルの形式を一括変換する
現在のディレクトリ配下にある全てのjpg画像を、同じファイル名でpng画像に変換する場合のコードです。
for f in *.jpg;
do
ffmpeg -i $f ${f%.jpg}.png;
done
コードの基礎部分の解説
シェルスクリプトの記号等を個別に解説した後、上述した一括変換のコードを解説します。
for文
複数の値を扱う際に使用します。
for 変数 in 値リスト;
do
処理;
done
; カンマ
コマンドを連続して実行する際に使用します。
コマンド1; コマンド2
$ ドルマーク
$変数名 で変数を表します。
{} 波括弧
変数名と文字列を区別する際、変数名を明示的に示すために使用します。
var="user_${name}"
% パーセント記号
変数内の文字列の末尾を最短一致で削除します。
var=foofoobarbar; echo "${var%b*r}"
# => foofoobar
コードの難解部分の解説
${f%.jpg}.png の正体
ここまでの解説を踏まえ、先ほどの一括変換の際のコードを見てみます。
for f in *.jpg;
do
ffmpeg -i $f ${f%.jpg}.png;
done
現在のディレクトリ配下にone.jpg
two.jpg
というファイルがある場合、for文の最初のループは以下のようになります。
コード | 実際の中身 |
---|---|
$f | one.jpg |
${f%.jpg} | one |
${f%.jpg}.png | one.png |
こうして、ffmpegコマンドの入力ファイル名の部分にone.jpg
、出力ファイル名の部分にone.png
が入ることで、同じファイル名を残したまま形式のみを変換できます。