Automatizálás és fejlesztés

Képek tömeges konvertálása FFmpeg-gel: gyakorlati útmutató

5 perc olvasás
Képek tömeges konvertálása FFmpeg-gel: gyakorlati útmutató

500 PNG képernyőképed van, amelyeket WebP-re kell konvertálni a webhelyedhez. Az FFmpeg főleg videoeszközként ismert, de képekkel ugyanolyan jól boldogul.

Miért használjuk az FFmpeg-et képekhez?

Az FFmpeg valószínűleg már telepítve van, ha videómunkát végzel. RAW kameraformátumokhoz (CR2, NEF, ARW) használd a darktable-t vagy RawTherapee-t.

Az FFmpeg telepítése

bash
# macOS
brew install ffmpeg

# Ubuntu / Debian
sudo apt install ffmpeg

# Windows (Chocolatey)
choco install ffmpeg

bash
ffmpeg -version

Az alapminta

Minden tömeges konverziós parancs ugyanazt a struktúrát követi: shell-ciklus (Linux/macOS) vagy for-ciklus (Windows). Mindig külön kimeneti könyvtárba írj.

Az összes PNG konvertálása JPG-re

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:vMinőségTipikus felhasználás
1-2Közel veszteségmentesNyomtatás, archiválás
3-5Magas minőségWebfotózás
6-10KözepesElőnézetek
11+Alacsony minőségKerülendő

Az összes JPG konvertálása WebP-re

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

A WebP tipikusan 25–35 % kisebb fájlokat hoz létre, mint az egyenértékű JPG. Fotóknál 80–85 az optimális tartomány.

Konvertálás PNG-re

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

Vegyes formátumok konvertálása

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

Átméretezés és konvertálás egy lépésben

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

Alkönyvtárak rekurzív feldolgozása

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

Párhuzamos feldolgozás a sebesség növeléséhez

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

8-magos gépen SSD-tárolással a párhuzamos feldolgozás tipikusan 3–5-szörösére csökkenti a konverziós időt.

Előrehaladásjelző

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

Hibakezelés

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

Parancsreferencia

KonverzióParancs (Linux/macOS)Megjegyzés
Összes PNG → JPGfor f in *.pngdo ffmpeg -i "$f" -q:v 3 output/${f%.png}.jpg
Összes JPG → WebPfor f in *.jpgdo ffmpeg -i "$f" -quality 85 output/${f%.jpg}.webp
Összes JPG → PNGfor f in *.jpgdo ffmpeg -i "$f" output/${f%.jpg}.png
Összes → WebP veszteségmentesfor f in *.pngdo ffmpeg -i "$f" -lossless 1 output/${f%.png}.webp
Átméretezés + konvertálásfor f in *.jpgdo ffmpeg -i "$f" -vf scale=1080:-1 -q:v 3 output/${f%.jpg}.jpg

Mikor nem az FFmpeg a megfelelő eszköz

RAW kameraformátumok — korlátozott támogatás. Használd a darktable-t vagy RawTherapee-t.

AVIF kódolás — lehetséges, de hardveres gyorsítás nélkül nagyon lassú.

Csak néhány fájl? FastConvert gyorsabb — telepítés nélkül.

Gyakran ismételt kérdések

Alapértelmezés szerint nem. Add hozzá -map_metadata 0: ffmpeg -i input.jpg -map_metadata 0 -q:v 3 output.jpg

Akkor fordul elő, ha a forrás JPG már erősen tömörített. Mindig a legjobb elérhető forrásból konvertálj.

Használj PNG-t kimeneti formátumként vagy -lossless 1 opciót WebP esetén.

Add hozzá -y opciót az automatikus felülíráshoz vagy -n opciót a meglévő fájlok kihagyásához.

Összefoglalás

Az FFmpeg tömeges képkonverziója egyszerű shell-ciklusra épül. Mindig tesztelj kis méretű kötegen a teljes könyvtár feldolgozása előtt.

Képek konvertálása parancssor nélkül? FastConvert — ingyenesen, regisztráció nélkül.

Megosztás