Otomatisasi dan pengembangan

Cara Mengkonversi Gambar Secara Massal dengan FFmpeg: Panduan Praktis

5 menit baca
Cara Mengkonversi Gambar Secara Massal dengan FFmpeg: Panduan Praktis

Anda memiliki 500 screenshot PNG yang perlu dikonversi ke WebP untuk website Anda. FFmpeg paling dikenal sebagai alat video, namun menangani gambar sama baiknya.

Mengapa FFmpeg untuk gambar?

FFmpeg kemungkinan sudah terpasang jika Anda mengerjakan video. Untuk format RAW (CR2, NEF, ARW), gunakan darktable atau RawTherapee.

Instalasi FFmpeg

bash
# macOS
brew install ffmpeg

# Ubuntu / Debian
sudo apt install ffmpeg

# Windows (Chocolatey)
choco install ffmpeg

bash
ffmpeg -version

Pola dasar

Setiap perintah konversi massal mengikuti struktur yang sama: loop shell (Linux/macOS) atau loop for (Windows). Selalu tulis ke direktori output terpisah.

Konversi Massal PNG ke JPG

bash
mkdir -p output
for f in *.png; do
  ffmpeg -i "$f" -q:v 2 "output/${f%.png}.jpg"
done

bash
mkdir output
for %f in (*.png) do ffmpeg -i "%f" -q:v 2 "output/%~nf.jpg"

bash
New-Item -ItemType Directory -Force output
Get-ChildItem *.png | ForEach-Object {
  ffmpeg -i $_.FullName -q:v 2 "output/$($_.BaseName).jpg"
}

-q:vKualitasPenggunaan tipikal
1-2Hampir losslessCetak, arsip
3-5Kualitas tinggiFotografi web
6-10Kualitas sedangPratinjau
11+Kualitas rendahHindari

Konversi Massal JPG ke WebP

bash
mkdir -p output
for f in *.jpg *.jpeg; do
  [ -f "$f" ] || continue
  ffmpeg -i "$f" -quality 85 "output/${f%.*}.webp"
done

bash
mkdir -p output
for f in *.png; do
  ffmpeg -i "$f" -lossless 1 "output/${f%.png}.webp"
done

WebP menghasilkan file yang biasanya 25–35 % lebih kecil dari JPG setara. Untuk foto, 80–85 adalah rentang optimal.

Konversi ke PNG

bash
mkdir -p output
for f in *.jpg *.jpeg; do
  [ -f "$f" ] || continue
  ffmpeg -i "$f" "output/${f%.*}.png"
done

Konversi Format Campuran

bash
mkdir -p output
for f in *.jpg *.jpeg *.png *.webp *.tiff *.bmp; do
  [ -f "$f" ] || continue
  ffmpeg -i "$f" -q:v 3 "output/${f%.*}.jpg"
done

Ubah Ukuran dan Konversi Sekaligus

bash
mkdir -p output
for f in *.png; do
  ffmpeg -i "$f" -vf scale=1080:-1 -q:v 3 "output/${f%.png}.jpg"
done

bash
mkdir -p output
for f in *.jpg; do
  ffmpeg -i "$f" -vf "crop='min(iw,ih)':'min(iw,ih)',scale=200:200" \
    "output/${f%.jpg}_thumb.jpg"
done

Pemrosesan Rekursif Subdirektori

bash
find . -name "*.png" -not -path "./output*" | while read f; do
  output="output/${f#./}"
  mkdir -p "$(dirname "$output")"
  ffmpeg -i "$f" -q:v 3 "${output%.png}.jpg"
done

Pemrosesan Paralel untuk Kecepatan

bash
mkdir -p output
ls *.png | xargs -P 4 -I {} sh -c 'ffmpeg -i "$1" -q:v 3 "output/${1%.png}.jpg"' _ {}

Pada mesin 8-core dengan penyimpanan SSD, pemrosesan paralel biasanya mengurangi waktu konversi 3–5 kali lipat.

Indikator Kemajuan

bash
total=$(ls *.png | wc -l)
count=0
mkdir -p output
for f in *.png; do
  count=$((count + 1))
  echo "[$count/$total] $f"
  ffmpeg -loglevel quiet -i "$f" -q:v 3 "output/${f%.png}.jpg"
done

Penanganan Kesalahan

bash
mkdir -p output
error_log="errors.txt"
> "$error_log"
for f in *.jpg *.jpeg *.png *.webp; do
  [ -f "$f" ] || continue
  if ffmpeg -loglevel error -i "$f" -quality 85 "output/${f%.*}.webp" 2>>"$error_log"; then
    echo "✓ $f"
  else
    echo "✗ $f"
  fi
done

Referensi Perintah

KonversiPerintah (Linux/macOS)Catatan
Semua PNG → JPGfor f in *.pngdo ffmpeg -i "$f" -q:v 3 output/${f%.png}.jpg
Semua JPG → WebPfor f in *.jpgdo ffmpeg -i "$f" -quality 85 output/${f%.jpg}.webp
Semua JPG → PNGfor f in *.jpgdo ffmpeg -i "$f" output/${f%.jpg}.png
Semua → WebP losslessfor f in *.pngdo ffmpeg -i "$f" -lossless 1 output/${f%.png}.webp
Ubah ukuran + konversifor f in *.jpgdo ffmpeg -i "$f" -vf scale=1080:-1 -q:v 3 output/${f%.jpg}.jpg

Kapan FFmpeg Bukan Alat yang Tepat

Format RAW kamera — dukungan terbatas. Gunakan darktable atau RawTherapee.

Encoding AVIF — mungkin tapi sangat lambat tanpa akselerasi hardware.

Hanya beberapa file? FastConvert lebih cepat — tanpa instalasi.

Pertanyaan yang Sering Ditanyakan

Secara default tidak. Tambahkan -map_metadata 0: ffmpeg -i input.jpg -map_metadata 0 -q:v 3 output.jpg

Terjadi ketika JPG sumber sudah sangat terkompresi. Selalu konversi dari sumber kualitas terbaik.

Gunakan PNG sebagai format output atau -lossless 1 untuk WebP.

Tambahkan -y untuk menimpa otomatis atau -n untuk melewati file yang sudah ada.

Kesimpulan

Konversi gambar massal dengan FFmpeg adalah tentang loop shell sederhana. Selalu uji pada batch kecil sebelum memproses seluruh perpustakaan.

Konversi gambar tanpa baris perintah? FastConvert — gratis, tanpa daftar.

Bagikan